华拓科技网
您的当前位置:首页SQL server数据库资料第02章(有红色标注)

SQL server数据库资料第02章(有红色标注)

来源:华拓科技网
SQL Server 2008高级开发与应用

第2章 数据检索

2.1 基础知识

T-SQL语句中的SELECT语句用于从数据库表或视图中查询数据,并且可以从一个或多个表/视图中选择一个或多个行/列。虽然SELECT 语句的完整语法比较复杂,但下面会分为一个个子句进行介绍,其主要子句包括:SELECT子句、FROM子句、WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句。在查询之间还可以使用UNION、EXCEPT和INTERSECT运算符,将各个查询的结果合并或比较到一个结果集中。

SELECT语句的语法基本结构如下: SELECT [ ALL | DISTINCT ]

[ TOP expression [ PERCENT] [ WITH TIES] ] < select_list >

[ INTO new_talbe ]

[ FROM { } [ ,…n ] ] [ WHERE ]

[ GROUP BY [ ALL ] group_by_expression [ ,…n ] [ WITH {CUBE | ROLLUP }] ]

[ HAVING ]

2.1.1 简单的数据查询

SELECT子句的作用是指定查询返回的列。 FROM子句的作用是指定要查询数据的来源。

WHERE子句的作用是定义要返回的行应满足的条件。可包含谓词BETWEEN、

CONTAINS 、EXISTS 、FREETEXT 、IN 、IS [NOT] NULL 、LIKE ,以及使用逻辑运算符 AND、OR 和 NOT 的一个或多个谓词的组合的搜索条件。

WHERE子句中谓词LIKE的语法是:

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]  match_expression:任何有效的字符数据类型的表达式。

 pattern:在match_expression 中搜索并且可以包括下列有效通配符的特定字符串。

表2.1 通配符 通配符 % _(下划线) [ ] 说明 包含零个或多个字符的任意字符串。 任何单个字符。 指定范围([a-f])或集合([abcdef])中的任何单个字符。 示例 WHRER title LIKE „%computer%‟ 将查询在书名中任意位置包含单词“computer”的所有书名。 WHERE au_fname LIKE „_ean‟ 将查询以ean结尾的所有4个字母的名字(Dean、Sean等)。 WHERE au_lname LIKE „[C-P]arsen‟ 将查询以arsen结尾并且以介于C与P之间的任何单个字符开始的作者姓氏,例如Larsen、Karsen等。 WHERE au_lname LIKE „de[^l]%‟ 将查询以de开始并且其后的字母不为l的所有作者的姓氏。 [^] 不属于指定范围([a-f])或集合([abcdef])中的任何单个字符。

15

第2章 数据检索

Name like ‘张%’ or Name like ‘王%’

Name like ‘[张王]%’ 2.1.2 联接相关表的查询

用FROM子句指定查询哪些表,使用JOIN操作符可检索多个相关表中列的数据并将结果归为一个数据结果集。JOIN操作符可联接两个及两个以上的表,也可自联接。

联接操作的类型有以下几种:

 INNER:指定返回所有匹配的行对。放弃两个表中不匹配的行。如果未指定任何联

接类型,此设置为默认设置。

 FULL [ OUTER ] :指定在结果集中包括左表或右表中不满足联接条件的行,并将

对应于另一个表的输出列设为 NULL。这是对通常由 INNER JOIN 返回的所有行的补充。

 LEFT [ OUTER ] :指定在结果集中包括左表中所有不满足联接条件的行,并在由

内部联接返回所有的行之外,将另外一个表的输出列设为 NULL。

 RIGHT [OUTER] :指定在结果集中包括右表中所有不满足联接条件的行,且在由

内部联接返回的所有行之外,将与另外一个表对应的输出列设为 NULL。  CROSS :指定两个表的叉积。

2.1.3 使用聚合函数的查询

聚合函数可以对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。

聚合函数只能在以下位置作为表达式使用:

 SELECT 语句的选择列表(子查询或外部查询)  HAVING 子句

 COMPUTE 或 COMPUTE BY 子句 Transact-SQL 提供了下列聚合函数:

表2.2 聚合函数 函数 AVG MIN MAX SUM CHECKSUM CHECKSUM_AGG COUNT COUNT_BIG STDEV STDEVP VAR VARP GROUPING 返回组中各值的平均值。 返回表达式中的最小值。 返回表达式中的最大值。 返回表达式中所有值的和或仅非重复值的和。SUM 只能用于数字列。 返回按照表的某一行或一组表达式计算出来的校验和值。CHECKSUM 用于生成哈希索引。 返回组中各值的校验和。 返回组中的项数。返回 int 数据类型值。 返回组中的项数。返回 bigint 数据类型值。 返回指定表达式中所有值的标准偏差。 返回指定表达式中所有值的总体标准偏差。 返回指定表达式中所有值的方差。 返回指定表达式中所有值的总体方差。 当行由 CUBE 或 ROLLUP 运算符添加时,该函数将导致附加列的输出值为 1;当行不由 CUBE 或 ROLLUP 运算符添加时,该函数将导致附加列的输出值为 0。 16

说明 SQL Server 2008高级开发与应用

数据查询中使用GROUP BY子句指定用来放置输出行的组。如果 SELECT 子句