首页 > 数据库 > 文库 > 正文

SQL语言的数据查询功能

2024-09-07 22:12:22
字体:
来源:转载
供稿:网友

SQL语言中最主要、最核心的部分是它的查询功能。查询语言用来对已经存在于数据库中的数据按照特定的组合、条件表达式或次序进行检索,其基本格式是由SELECT子句、FROM子句和WHERE子句组成的查询块:

SELECT<列名表> FROM<表或视图名> WHERE<查询限定条件>

也就是说,SELECT指定了想要看哪些列数据,FROM指定这些数据来自哪些表或视图,WHERE指定了想看哪些行。在SQL语言中除了查询以外,许多其他功能也都离不开SELECT语句,如创建视图,实际上是利用查询语句来实现的;又如插入数据时,有很多时候是从另外一张或多张表中选择符合条件的数据。所以,掌握查询语句是掌握SQL语言的关键。

以下是SQL Server中的SELECT语句的完整用法。

SELECT select_list [INTO new_table_] FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression [ASC | DESC]]

下面简单介绍一下常用的SQL查询语法。

(1)检索表中所有列,这是最简单的一种方法,其格式为:

SELECT * FROM TABLE_NAME

(2)检索表中特定列,其格式为:

SELECT COLUMN_NAME FROM TABLE_NAME

在查找多列内容时,用‘,’将各字段分开。

(3)用单引号加入字符串,其格式为:

SELECT COLUMN_NAME 'STRING LITERAL' FROM TABLE_NAME

(4)改变列标题。在默认情况下,显示的查询结果中的列标题是列名,但用户可以改变列标题。共有以下两种方法:

方法1 采用“列标题=列名”的格式

SELECT COLUMN_HEADING=COLUMN_NAME FROM TABLE_NAME

方法2 采用“列名列标题”的格式

SELECT COLUMN_NAME COLUMN_HEADING FROM TABLE_NAME

(5)算术运算符。在列出现的位置上,可以使用算术运算符操纵列,对查询的结果进行计算。这些算术运算符包括:+(加)、-(减)、*(乘)、/(除)和%(取模)。其格式为:

{CONSTANT | COLUMN_NAME | FUNCTION |(SUBQUERY)} [{ARITHMETIC_OPERAOR | BITWISE_OPERATOR | STRING_OPERATOR} …]

(6)基于比较的选择行,其格式为:

SELECT SELECT_LIST FROM TALBE_LIST WHERE EXPRESSION COMPARISION_OPERATOR EXPRESSION

(7)基于范围的选择行,其格式为:

SELECT SELECT_LIST FROM TABLE_LIST WHERE EXPRESSION [NOT] BETWEEN EXPRESSION AND EXPRESSION

(8)基于列表的选择行,其格式为:

SELECT SELECT_LIST FROM TABLE_LIST WHERE [NOT] EXPRESSION [NOT] IN( VALUE_LIST)

(9)基于字符选择行。查找中,有时需要对字符串进行比较。使用LIKE运算符可以完成对字符串的模糊匹配。其格式为:

SELECT SELECT_LIST FROM TABLE_LIST WHERE EXPRESSION [NOT] LIKE 'STRING'

(10)基于多个搜索条件选择行。在WHERE子句中,也可以使用“逻辑运算符”连接多个条件,构成一个更复杂的条件进行查询。可以使用以下3种逻辑运算符:AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)。具体格式如下:

SELECT SELECT_LIST FROM TABLE_LIST WHERE [NOT] EXPRESSION {AND/OR} [NOT] EXPRESSION

(11)消除重复行。可以用DISTINCT消除重复行,其格式为:

SELECT [ALL | DISTINCT] SELECT_LIST FROM TABLE_NAME WHERE SEARCH_CONDITIONS

(12)结果排序。通常用户对查询出来的数据,希望按照某种顺序显示,以便查找。通过ORDER BY子句可以改变查询结果的显示顺序。ORDER BY子句的格式为:

SELECT COLUMN_NAME FROM TABLE_NAME [ORDER BY COLUMN_NAME | SELECT_LIST _NUMBER | EXPRESSION [ASC | DESC]

(13)分组查询。就是将表中数据按照一定条件分类组合,再根据需要得到统计信息。其格式为:

SELECT COLUMN_NAME FROM TABLE_NAME WHERE SEARCH_CONDITION [GROUP BY [ALL] AGGREGAT E_FREE_EXPRESSION]

(14)COMPUTE和COMPUTE BY。可以通过COMPUTE和COMPUTE BY计算出汇总数据。语法为:

COMPUTE ROW_AGGREGATE (COLUMN_NAME)

(15)连接查询。在数据库应用中,经常要涉及从两个或更多的表中查询数据,这就需要使用连接查询。其格式如下:

SELECT COLUMN_NAME FROM TABLE_NAME WHERE TABLE_NAME.COLUMN JOIN_ OPERATOR TABLE_NAME.COLUMN

上述的连接操作符(JOIN_OPERATOR)可以是:=、>、<、>=、<=、! =、< >、! >、! <、= *、* =。在ANSI中,“=”连接应该写成Inner Join;“* =”连接应该写成LEFT OUT JOIN;“= *”连接应该写成“RIGHT OUT JOIN”。在SQL Server中,这些写法都可以用。但是,ANSI规定的写法是INNER JOIN等标志。一般而言,在任何连接中,都使用“主键=外键”的连接查询条件。

(16)执行子查询。子查询是指一条SELECT语句作为另一条SELECT语句的一部分。外层的SELECT语句称为外部查询,内层的SELECT语句称为内部查询(或子查询)。子查询分成两种:嵌套查询和相关子查询。子查询能够将比较复杂的查询分解为几个简单的查询。虽然使用子查询可以产生在表之间使用连接操作符相同的结果,但是,其操作运行速度较连接操作慢。

嵌套查询的流程是:首先执行内部查询,查询出来的数据并不显示出来,而是传递给外层语句,作为该语句的查询条件来使用。子查询可以多层次嵌套。

例如查询每个书名、ID号及拥有该书的最高百分比版权的作者ID,格式为:

SELECT TITLE_ID, AU_ID, ROYALTYPER FROM TITLEAUTHORTA WHERE ROYALTYPER = (SELECT MAX (ROYALTYPER) FROM TITLEAUTHOR WHERE TITLE_ID =TA.TITLE_ID)

(17)查询的基础上创建新表。SELECT INTO的作用是在查询的基础上创建新表。若建永久表,必须设置“SELECT INTO / BULKCOPY”;若建临时表,必须在表前设置#(局部临时表)或##(全局临时表)。新表的行和列来自查询结果。例如创建#PHONYTABLE临时表,该表的数据由每个书名的前40个字符及月平均销售量组成,格式为:

SELECT TITLE = SUBSTRING (TITLE, 1, 40), MONTHLY = YTD_SALES/12 INTO #PHONYTABLE FROM TITLES

(18)合并数据集。合并数据集(UNION)的作用是,把结果组合成一个结果集来操作两个或更多的查询结构。例如:

SELECT 'ANSI', CONVERT (varchar (30), GETDATE (), 102) AS style UNION SELECT 'Japanese', CONVERT (varchar (30), GETDATE (), 111) UNION SELECT 'Europen', CONVERT (varchar (30), GETDATE (), 113)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表