《SQL Server2005数据库实用教程 教学课件 ppt 作者 常军林 ppt第六章》由会员分享,可在线阅读,更多相关《SQL Server2005数据库实用教程 教学课件 ppt 作者 常军林 ppt第六章(140页珍藏版)》请在金锄头文库上搜索。
1、知识目标,掌握SELECT查询语句 掌握数据的导入导出方法,技能目标,能够利用SELECT语句进行单表及多表联接查询 能够使用子查询 能够对表中数据进行计算、汇总、排序等 可以将数据在SQL Server和ACCESS、EXCEL等之间进行转换,6.1 SELECT语句 6.2 使用SELECT进行统计检索 6.3 使用SELECT进行多表数据检索 6.4 子查询 6.5 数据导入和导出 6.6 实训 查询数据 6.7 实训 导入导出数据,6.1 SELECT语句 SELECT语句可以用来检索表中的数据,通过执行SELECT语句,能够显示存储在表中的信息。 6.1.1 SELECT语句的语法
2、SELECT 语句的基本语法格式如下: SELECT INTO 新表名 FROM WHERE 条件表达式 GROUP BY 列名列表,HAVING 条件表达式 ORDER BY 列名1ASC|DESC,列名2 ASC|DESC ,列名nASC|DESC COMPUTE 行聚合函数名(统计表达式) ,n BY 分类表达式,n 其中各子句说明如下: (1)SELECT子句用于指出要查询的字段,也就是查询结果中包含的字段的名称。 (2)INTO子句用于创建一个新表,并将查询结果保存到这个新表中。,(3)FROM子句用于指出所要进行查询的数据来源,即来源于哪些表或视图的名称。 (4)WHERE子句用于
3、指出查询数据时要满足的检索条件。 (5)GROUP BY子句用于对查询结果分组。 (6)ORDER BY子句用于对查询结果排序。 (7)COMPUTE子句用于对查询结果进行汇总。 在SELECT语句中,SELECT子句和FROM子句是必选项,其余子句是可选项。,6.1.2 基本的SELECT语句 SELECT语句的基本形式如下: SELECT FROM 1选择表中的所有列 在Select语句中,可以使用“*”来选择表中的所有列数据,结果集中列的显示顺序与其在基表中的顺序相同。 【例6.1】 查询“图书信息”表中的所有数据,结果如图6-1所示。查询语句如下: Use 学生图书管理系统 Selec
4、t * from 图书信息,2选择表中的指定列 在很多情况下,用户只对表中的一部分属性感兴趣,这时可以通过选择指定列来进行查询,指定的列名中间用逗号隔开。 【例6.2】 查询“图书信息”表中图书编号、图书名称、作者、出版社名称列的相关信息。结果如图6-2所示。 查询语句如下: Use 学生图书管理系统 Select 图书编号, 图书名称, 作者, 出版社名称 from 图书信息,3设置字段别名 显示查询结果时,通常第一行显示各个输出字段的名称。用户还可以根据实际需要对查询数据的列标题进行修改,或者为没有标题的列加上临时标题。设置别名的语法格式有两种: (1)列表达式 as 别名 (2)别名=列
5、表达式 注意:当原字段名或别名中有空格时,必须用方括号或双引号括起来。,【例6.3】 显示“图书信息”表中图书名称、作者两列的信息,并为作者列设置别名“主编”,结果如图6-3所示。 查询语句如下: Select 图书名称, 作者 as 主编 from 图书信息,4查询经过计算的值 SELECT子句的不仅可以是表中的属性列,也可以是由数据库表中的一些字段经过运算而生成的表达式,包括字符串常量、函数等。 语法格式为:表达式 AS 别名。 当不为表达式指定别名时,输出时该列的第一行将显示无列名。,【例6.4】 将“图书信息”中的定价打七折。结果如图6-4所示。 查询语句如下: Select 图书名称
6、, 定价*0.7 as 七折价 from 图书信息,5用ALL返回全部记录 要返回所有记录可在SELECT后使用ALL,ALL是默认设置,因此也可以省略。如果在SELECT子句中没有使用任何一个选择谓词,则相当于使用了ALL关键字,这时选择查询将返回符合条件的全部记录。,【例6.5】 显示所有图书的出版社名称,结果如图6-5所示。 查询语句如下: Select all 出版社名称 from 图书信息,6用DISTINCT消除结果集中重复的记录 当对表只选择部分字段时,可能会出现重复行。如果让重复行只显示一次,需在SELECT子句中用DISTINCT指定在结果集中只能显示唯一行。关键字DISTI
7、NCT是限制字段列表中所有字段的值都相同时只显示其中一条,而不是针对某个字段来处理。就下面的查询命令而言,只有“出版社名称”和“入馆时间”都相同的才会被视为重复的记录。,【例6.6】 显示“图书信息”表中出版社名称、入馆时间列的相关信息,重复的记录只显示一次,结果如图6-6所示。 查询语句如下: Select distinct 出版社名称, 入馆时间 from 图书信息,7用TOP显示前面若干条记录 语法格式如下: SELECT TOP n PERCENT 列名l ,n FROM 表名 其中: TOP n表示返回最前面的n行,n表示返回的行数。 TOP n PERCENT表示返回最前面的n行。
8、,【例6.7】 显示“图书信息”表的前4行记录,结果如图6-7所示。 查询语句如下: Select top 4 * from 图书信息,【例6.8】 显示“图书信息”表的前20%行记录,结果如图6-8所示。 查询语句如下: Select top 20 percent * from 图书信息,6.1.3 WHERE子句 根据前面的介绍,我们知道只要通过FROM子句指定数据来源,SELECT子句指定输出字段就能够从数据库表中获取全部数据。而实际工作中大多数查询并不是希望得到表中的所有记录,而是满足给定条件的部分记录,这就需要对数据库表中的记录进行过滤。通过在SELECT语句中使用WHERE子句,可
9、以设置对记录的检索条件,从而保证查询结果中仅仅包含所需要的记录。,基本语法格式如下: SELECT 列名1,列名n FROM 表名 WHERE 查询条件 查询条件为选择查询结果的条件,是用运算符连接字段名、常量、变量、函数等而得到的表达式,其取值为TRUE或FALSE。满足条件的结果为TRUE,不满足条件的结果为FALSE。满足条件的记录都会包含在查询所返回的结果集中,不满足条件的记录则不会出现在这个结果集中。,在使用时,WHERE子句必须紧跟在FROM子句后面。查询条件中可以包含的运算符见表6-1。,1比较表达式作查询条件 比较表达式是逻辑表达式的一种,使用比较表达式作为查询条件的一般表达形
10、式是: 表达式 比较运算符 表达式 其中:表达式为常量、变量和列表达式的任意有效组合。比较运算符包括=、!、!=、=、!=。,【例6.9】 显示“图书信息”表中图书类别是“计算机”类的图书信息,结果如图6-9所示。 查询语句如下: Select * from 图书信息 where 图书类别= 计算机,2逻辑表达式作查询条件 使用逻辑表达式作为查询条件的一般表达形式是: 表达式1 AND|OR 表达式2, 或NOT 表达式 【例6.10】 显示“图书信息”表中,图书类别是“计算机”类并且是电子出版社的图书信息,结果如图6-10所示。 查询语句如下: Select * from 图书信息 wher
11、e 图书类别= 计算机 and 出版社名称= 电子出版社,3范围条件选择查询 查询的条件如果是一个范围,则使用逻辑运算符BETWEENAND,其语法格式为: 表达式 NOT BETWEEN 表达式l AND 表达式2 其中BETWEEN后是范围的下限(即低值),AND后是范围的上限(即高值)。使用BETWEEN限制查询数据范围时同时包括了边界值,而使用NOT BETWEEN进行查询时没有包括边界值。,【例6.11】 显示“图书信息”表中定价在20元和30元之间的图书信息,结果如图6-11所示。 查询语句如下: Select 图书名称,作者,定价 from 图书信息 where 定价 betwe
12、en 20 and 30,4列表条件选择查询 使用逻辑运算符IN可以查询符合列表中任何一个值的数据,语法格式为: 表达式 NOT IN (表达式1,表达式2,表达式n) 如果“表达式”的值是谓词IN后面括号中列出的表达式1,表达式2,表达式n的值之一,则条件为真。,【例6.12】 显示“图书信息”表中计算机类、数学类图书信息,结果如图6-12所示。 查询语句如下: Select * from 图书信息 where 图书类别 IN (计算机,数学),5字符串匹配条件的选择查询 逻辑运算符LIKE用于测试一个字符串是否与给定的模式相匹配。所谓模式,是一种特殊的字符串,其特殊之处在于它不仅可以包含普
13、通字符,还可以包含通配符,用于表示任意的字符串。在实际应用中,如果需要从数据库中检索一批记录,但又不能给出精确的查询条件,可以使用LIKE运算符和通配符来实现模糊查询。 语法格式:表达式 NOT LIKE 可以是一个完整的字符串,也可以含有通配符。 SQL Server提供了以下4种通配符供用户灵活实现复杂的查询条件。,(1) _(下划线):代表单个字符或一个汉字。一个全角字符也算一个字符。 【例6.13】 显示“图书信息”表中作者名是两个字并且姓张的图书信息,结果如图6-13所示。 查询语句如下: Select * from 图书信息 where 作者 like 张_,(2) %(百分号):
14、代表0个或多个字符。 【例6.14】 显示“图书信息”表中作者姓张的图书信息,结果如图6-14所示。 查询语句如下: Select * from 图书信息 where 作者 like 张%,(3) :代表指定范围(如x-z)或集合(如aceg)中的任意一个字符。 【例6.15】 显示“图书信息”表中作者姓张、李、王的图书信息,结果如图6-15所示。 查询语句如下: Select * from 图书信息 where 作者 like 张李王%,(4):代表不属于指定范围(如x-z)或集合(如aceg)的任意一个字符。 【例6.16】 显示“图书信息”表中作者不是姓张、李、王的图书信息,结果如图6-
15、16所示。 查询语句如下: Select * from 图书信息 where 作者 like 张李王%,注意:通配符和字符串必须括在单引号中。 如果要查找的字段中正好包含有_、%、和时,可以使用ESCAPE子句来告诉系统_、%、 和只是一个普通的字符,而不是一个通配符。具体做法是在中要作为普通字符出现的通配符之前加上一个字符,然后在ESCAPE的后面指明,也可以用方括号将它们括起来。,【例6.17】 显示“图书信息”表中图书名称包含有“%”的图书信息,结果如图6-17所示。 查询语句如下: (1)Select * from 图书信息where 图书名称like %!% escape ! (2)
16、Select * from 图书信息where 图书名称like %,其中(1)中第一、第三个%为通配符,中间的%为普通字符,由转义字符“!”引出,并在escape后面说明,转义字符可以是除了通配符外的其他字符、数字等。 6NULL值的选择查询 当需要判定一个表达式的值是否为空值(NULL)时,使用 IS NULL关键字。不能用“=”代替,格式为 expression IS NOT NULL,【例6.18】 显示“租借信息”表中所有正在被借阅的图书即还书日期为空的图书,结果如图6-18所示。 查询语句如下: Select * from 租借信息 where 还书日期 is null,6.1.4 INTO子句 使用INTO子句允许用户定义一个新表,并且把SELECT子句的数据插入到新表中,其语法格式如下。 SELECT I