SELECT语句是一个查询表达式,它包括SELECT、FROM、WHERE、GROUP BY和ORDER BY子句。SELECT语句具有数据查询、统计、分组和排序的功能,它可以精确地对数据库进行查找,也可以进行模糊查询。SELECT语句的完整语法如下所示:
SELECT [ALL|DISTINCT]select_list
[INTO new_table]
FROM table_source
[WHERE search_conditions]
[GROUP BY group_by_expression]
[HAVING search_conditions]
[ORDER BY order_expression[ASC|DESC]]
从上述语法中可以看出,SELECT查询语句中共有5个子句,其中SELECT和FROM语句为必选子句,而WHERE、GROUP BY和ORDER BY子句为可选子句。下面对SELECT语法中各参数进行说明:
l SELECT子句 用来指定由查询返回的列,并且各列在SELECT子句中的顺序决定了它们在结果表中的顺序。
l ALL|DISTINCT 用来标识在查询结果集中对相同行的处理方式。关键字ALL表示返回查询结果集的所有行,其中包括重复行;关键字DISTINCT表示若结果集中有相同的数据行则只保留显示一行,默认值为ALL。
l select_list 用来指定要显示的目标列,若要显示多个目标列,则各列名之间用半角逗号隔开。若要返回所有列,则可以用“*”表示。
l INTO new_table 用来创建一个新的数据表,new_table为新表的名称,表的数据为查询的结果集。
l FROM table_source子句 用来指定数据源,table_source为数据源表名称。
l WHERE search_conditions子句 用来指定限定返回的行的搜索条件,search_conditions为条件表达式。
l GROUP BY group_by_expression子句 用来指定查询结果的分组条件,即归纳信息类型,group_by_expression为分组所依据的表达式。
l HAVING search_conditions子句 用来指定组或聚合的搜索条件,search_conditions为分组后的条件表达式。
l ORDER BY order_expression[ASC|DESC]子句 用来指定结果集的排序方式,ASC表示结果集以升序排列,DESC表示结果集以降序排列,默认情况下结果集以ASC升序排列。
在使用SELECT语句时,还要遵守以下两条规则:
1.SELECT语法中子句的顺序
虽然T-SQL是一种格式比较自由的语言,但也必须按照语句的执行顺序来排列语句的格式。例如,GROUP BY子句必须放在ORDER BY子句的前面,否则会出现语法错误。具体的SELECT语句的执行顺序如下所示:
1) FROM子句
2) WHERE子句(可选)
3) GROUP BY子句(可选)
4) HAVING子句(可选)
5) SELECT子句
6) ORDER BY子句(可选)
2.引用对象名称约定
若使用SELECT语句查询时,所引用对象的数据库不是当前数据库或引用的列名不明确时,为了保证查询的正确性,在引用数据表或列时需要使用数据库或数据表名来限定数据表或列的名称。
1) 如果要引用某数据表名称,而当前数据库不是所引用对象的数据库,就需要使用USE语句将当前数据库设置为该表所在的数据库。例如,当前数据库为【体育场管理系统】,而现在要引用【工资管理系统】数据库中的【员工信息】数据表,这时需要在前面加上“USE工资管理系统”语句。
如果当前要使用的列名不明确是哪个数据表中的列,就需要通过给该列指定表名来确定其数据源。例如,在同一数据表中的多个表中都存在着名为【员工编号】的列,当进行多表操作时,如果只使用【员工编号】指定选择条件,就会出现歧义,所以需要通过表名来明确所要指定的【员工编号】列,即使用【员工信息】.【员工编号】和【工资信息】.【员工编号】表示。