内容正文:
关系数据库标准语言SQL
第3章
目录
01
SQL概述
02
数据库的创建
与管理
03
数据表及其操作
04
数据查询
05
视图
06
索引
本章主要内容
结构化查询语言(Structured Query Language,SQL)是关系数据库管理的标准语言,具有数据定义、数据查询、数据操纵和数据控制四个方面的功能。SQL结构简单,功能齐全,是目前广泛应用的关系数据库查询语言。
本章主要介绍SQL Server 2019数据库管理系统各种工具的使用和SQL的使用。
数据查询
第3章
04
3.4 数据查询
在数据库应用系统中,表的查询是经常使用的操作。可以在SQL Server Management Studio中通过对象资源管理器查询数据,也可以使用SELECT语句完成查询操作。SQL Server 2019提供了SELECT语句较完整的语法形式,该语句具有灵活的使用方式和丰富的功能。当使用SELECT语句构造查询语句时,熟悉基本参数和选项能更有效地实现数据查询。
SELECT语句是T-SQL从数据库中获取信息的一个基本语句。该语句可以实现从一个或多个数据库的一个或多个表中查询信息,并将结果显示为另外一个表(结果集)的形式。SELECT语句的基本语法格式如下。
3.4 数据查询
select_list:指明要查询的选择列表。
table_source:指明查询的表或视图的名称。
source_condition:指明查询要满足的条件。
group_by_expression:根据指定列中的值对结果集进行分组。
search_condition:对FROM、WHERE或GROUP BY子句中创建的中间结果集进行行的筛选,通常与GROUP BY子句一起使用。
<order_expression>[ASC|DESC]:对查询结果集中的行重新排序。ASC和DESC关键字分别用于指定按升序或降序排序。如果省略ASC或DESC,则系统默认为升序。
3.4.1 投影查询
使用SELECT语句可以选择查询表或视图中的一列或者多列,当选择多列时,列之间要用“,”分隔。
【例3.19】查询全体学生的学号、姓名和年龄。
3.4.1 投影查询
(1)使用星号(*)查询所有的列
如果想从FROM子句指定的表或视图中查询返回所有的列,可以在选择列表中选择星号*,而不需要列出表或视图中所有的列。
【例3.20】查询学生表student中的所有信息,即所有的行和所有的列。
3.4.1 投影查询
(2)使用DISTINCT消除重复值
在SELECT语句的选择列表中使用DISTINCT关键字,可以从结果集中消除指定列的值重复的行。
【例3.21】查询学生表student中学生的专业,消除重复的行。
从第一部分语句的执行结果和第二部分语句的执行结果中,可以发现学生的院系编号有多行重复,使用DISTINCT关键字可以实现去掉重复的行。
3.4.1 投影查询
(3)使用TOP n[PERCENT]仅返回n行
使用TOP关键字,可以从查询结果集中只返回前n行。如果指定了PERCENT关键字,则返回前n%行,此时n必须介于0~100。如果查询包括ORDER BY子句,则首先对行进行排序,然后从排序后的结果集中返回前n行或n%行。
【例3.22】从学生表student中查询学生的所有信息,要求只返回前3行数据。
【例3.23】从学生表student中查询学生的所有信息,要求只返回前20%行数据。
3.4.1 投影查询
(4)修改查询结果的列标题(别名)
利用投影查询可以控制列名的顺序,并可通过指定别名改变查询结果中的列标题的名称。修改查询结果的列标题有如下两种方法。
将要显示的列标题用单引号括起来后,写在列名后面,两者之间用空格或AS分隔开。
将要显示的列标题用单引号括起来后接等号(=),以及要查询的列名。
【例3.24】查询全体学生的学号、姓名和年龄,改变查询结果的列名显示。
3.4.2 选择查询
选择查询就是指定查询条件,然后在表中显示满足查询条件的记录。为了选择表中满足查询条件的某些行,可以使用SQL命令中的WHERE子句。WHERE子句后跟查询的逻辑表达式,通常情况下,必须定义一个或多个条件限制检索选择的数据行,结果集将返回表达式为真的数据行。在WHERE子句中,查询条件表达式可以包含比较运算符和逻辑运算符。
(1)比较,包括<、<=、!<、>、>=、>!、=、!=、<>等。
(2)范围,包括BETWEEN AND 和 NOT BETWEEN AND。
(3)集合,包括IN和NOT IN等。
(4)字符匹配,包括LIKE和NOT LIKE。
(5)未知判断,包括IS NULL和IS NOT