3.4 数据查询

3.4 数据查询

建立数据库的主要目的就是存储数据,在需要时进行检索、统计和显示输出。数据查询是数据库中最常用的操作之一,也是SQL语言中最重要、最丰富,也是最灵活的操作,可以使用数据查询语言(DQL)中的SELECT语句进行数据查询。

关系代数的运算在数据库中主要由数据查询来体现。SELECT语句从一个或多个表或视图中检索数据,然后以数据集的形式返回给用户,此外,还可以完成数据的统计、分组和排序。

SQL Server提供了查询编辑器,用于编辑和运行查询代码。

启动SQL Server Management Studio。

在左边的“对象资源管理器”窗口中选中要执行查询任务的数据库,然后单击工具栏中的按钮,打开查询编辑器。

在查询编辑器中输入完整的查询代码,单击工具栏上的按钮,进行语法分析。有语法错误时,需根据提示修改语法错误;没有语法错误时,单击工具栏上的按钮,查询结果会在查询编辑器下面的窗格中显示,如图3-21所示。

图3-21 查询编辑器

SELECT语句的基本格式如下:

说明:

SELECT子句:指定查询返回的列,select_list是以逗号分隔的一系列表达式;

INTO子句:可选项,在默认文件组中创建一个新表,并将来自查询的结果行插入该表中;

FROM子句:指定需要进行查询的数据源,table_source可以为表、视图、表变量或派生表(有无别名均可);

WHERE子句:可选项,指定查询返回的行的搜索条件,search_condition用于定义要返回的行应满足的条件;

GROUP BY子句:可选项,将查询结果按照指定列进行分组;

HAVING:可选项,指定组或聚合的搜索条件。HAVING通常与GROUP BY子句一起使用;

ORDER BY子句:可选项,按指定的列表对查询的结果集进行排序,并有选择地将返回的行限制为指定范围。ASC为升序,DESC为降序,默认为ASC。

SELECT语句中的子句顺序非常重要,可以省略可选子句,但使用这些子句时须按适当的顺序出现。SELECT语句的逻辑处理顺序一般如下:首先从FROM子句指定的关系(表、视图或派生表)中取出满足WHERE子句条件的元组;如果有GROUP BY子句,则将满足条件的元组按照指定列进行分组,指定属性列值相等的元组为一组,通常会在每组中作用聚合函数;如果有HAVING短语,则只有满足指定条件的组才予以输出;然后再按SELECT子句中的select_list选出元组中的属性值形成结果表;最后,如果有ORDER BY子句,则结果表输出时还需按order_by_expression排序输出。

SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。