10.1.3 FROM 子句 FROM 子句指定需要进行数据查询的表。只要SELECT 子句中有要查询的列,就必须使用FROM 子句。其语法如下: FROM {} [,...n] ::= table_name [ [AS] table_alias ] [ WITH ( [,...n]) ] | view_name [ [AS] table_alias ] | rowset_function [ [AS] table_alias ] | OPENXML | derived_table [AS] table_alias [ (column_alias [,...n] ) ] | ::= ON | CROSS JOIN | ::= [ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ] [ ] JOIN 各参数说明如下:
- table_source
指明SELECT 语句要用到的表、视图等数据源。 - table_name [ [AS] table_alias ]
指明表名和表的别名。 - view_name [ [AS] table_alias ]
指明视图名称和视图的别名。 - rowset_function [ [AS] table_alias ]
指明行统计函数和统计列的名称。 - OPENXML
提供一个XML 文档的行集合视图。 - WITH ( [,...n])
指定一个或多个表提示。通常SQL Server 的查询优化器会自动选取最优执行计划,除非是特别有经验的用户,否则最好不用此选项。关于表提示table_hint 的设,定请参见下一章的“删除数据”部分。 - derived_table [AS] table_alias
指定一个子查询,从数据库中返回数据行。 - column_alias
指明列的别名,用以替换查询结果中的列名。 - joined_table
指定由连接查询生成的查询结果。有关连接与连接查询的介绍参见本章的相关章节。 - join_type
指定连接查询操作的类型。 - INNER
指定返回两个表中所有匹配的行。如果没有join_type 选项,此选项就为系统默认。 - LEFT [OUTER]
返回连接查询左边的表中所有的相应记录,而右表中对应于左表无记录的部分,用NULL 值表示。 - RIGHT [OUTER]
返回连接查询右边的表中所有的相应记录,而左表中对应于右表无记录的部分,用NULL 值表示。 - FULL [OUTER]
返回连接的两个表中的所有记录。无对应记录的部分用NULL 值表示。 - join_hint
指定一个连接提示或运算法则。如果指定了此选项,则INNER LEFT RIGHT 或FULL选项必须明确指定。通常SQL Server 的查询优化器会自动选取最优执行计划,除非是特别有经验的用户,否则最好不用此选项。 join_hint 的语法如下: ::= { LOOP | HASH | MERGE | REMOTE } 其中LOOP | HASH | MERGE 选项指定查询优化器中的连接是循环、散列或合并的。REMOTE 选项指定连接操作由右边的表完成。当左表的数据行少于右表,才能使用REMOTE 选项。当左表和右表都是本地表时,此选项不必使用。 - JOIN
指明特定的表或视图将要被连接。 - ON
指定连接的条件。 - CROSS JOIN
返回两个表交叉查询的结果。 10.1.4 WHERE 子句 WHERE 子句指定数据检索的条件,以限制返回的数据行。其语法如下: WHERE | ::= column_name { *= | =* } column_name 各参数说明如下: search_condition 通过由谓词构成的条件来限制返回的查询结果。 old_outer_join 指定一个外连接。此选项是不标准的,但使用方便。它用“*=” 操作符表示左连接,用“=*” 操作符表示右连接。此选项与在FROM 子句中指定外连接都是可行的方法,但二者只能择其一。
注意:如果在WHERE子句中指定一个值为FALSE的条件,则可以用SELECT...INTO语句来创建一个表名不同,但结构和数据类型均和原表相同的表。
10.1.5 GROUP BY 子句 GROUP BY 子句指定查询结果的分组条件。其语法如下; GROUP BY [ALL] group_by_expression [,...n] [ WITH { CUBE | ROLLUP } ] 各参数说明如下:
- ALL
返回所有可能的查询结果组合,即使此组合中没有任何满足WHERE 子句的数据。分组的统计列如果不满足查询条件,则将由NULL 值构成其数据。ALL 选项不能与CUBE或ROLLUP 选项同时使用。 GROUP BY ALL is not supported in queries that access remote tables. - group_by_expression
指明分组条件。group_by_expression 通常是一个列名,但不能是列的别名。数据类型为TEXT、 NTEXT、 IMAGE 或BIT 类型的列不能作为分组条件。 - CUBE
除了返回由GROUP BY 子句指定的列外,还返回按组统计的行。返回的结果先按分组的第一个条件列排序显示,再按第二个条件列排序显示以此类推。统计行包括了GROUPBY 子句指定的列的各种组合的数据统计。 - ROLLUP
与CUBE 不同的是,此选项对GROUP BY 子句中的列顺序敏感,它只返回第一个分组条件指定的列的统计行。改变列的顺序会使返回的结果的行数发生变化。 使用Distinct选项的统计函数,如AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、和SUM(DISTINCT column_name)等,不能在使用CUBE或ROLLUP选项时使用。
10.1.6 HAVING 子句 HAVING 子句指定分组搜索条件。HAVING 子句通常与GROUP BY 子句一起使用。TEXT、 NTEXT 和IMAGE 数据类型不能用于HAVING 子句。其语法如下: HAVING HAVING 子句与WHERE 子句很相似,其区别在于其作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。
10.1.7 UNION 操作符 UNION 操作符将两个或两个以上的查询结果合并为一个结果集。它与使用连接查询合并两个表的列是不同的。使用UNION 操作符合并查询结果需要遵循两个基本规则: - 列的数目和顺序在所有查询中必须是一致的;
- 数据类型必须兼容。
其语法如下: | () UNION [ALL] ) [UNION [ALL] ) [...n] ] 各参数说明如下: - | ()
指明查询的详细说明或查询表达式。 - UNION
合并操作符。 - ALL
合并所有数据行到结果中,包括值重复的数据行。如果不指定此选项,则重复的数据行只显示一行。
 
2/2 首页 上一页 1 2 |