SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第4章

上传人:E**** 文档编号:89181480 上传时间:2019-05-20 格式:PPT 页数:88 大小:1.93MB
返回 下载 相关 举报
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第4章_第1页
第1页 / 共88页
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第4章_第2页
第2页 / 共88页
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第4章_第3页
第3页 / 共88页
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第4章_第4页
第4页 / 共88页
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第4章_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第4章》由会员分享,可在线阅读,更多相关《SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第4章(88页珍藏版)》请在金锄头文库上搜索。

1、第4章 数据的查询,主要内容:,总体要求:,掌握查询的作用和分类 熟练掌握查询的每个子句 掌握数据汇总 掌握联接查询 掌握嵌套查询 掌握索引的概念及索引操作,4.1SELECT语句查询:,SQL语言提供SELECT语句,通过查询操作可得到所需的信息。查询的结果仍是一个表。 SELECT语句的基本格式是由SELECT语句、FROM子句和WHERE子句组成的SQL查询语句。SELECT用于指定查询结果集中的列,FROM指定了数据的来源,WHERE 指定了查询的条件。,SELECT语句的完整语法比较复杂,其主要语法格式如下。 SELECT select_list INTO new_table FRO

2、M table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC ,SELECT语句的执行过程是: 根据WHERE子句的检索条件,从FROM子句指定的基本表或视图中选取满足条件的元组,再按照SELECT子句中指定的列,投影得到结果表。 如果有GROUP BY子句,则将查询结果按照group_by_list相同的值进行分组。 如果GROUP BY子句后有HAVING短语,则只输出满足HAVING条件的元组。

3、如果有ORDER BY子句,查询结果还要按照其后指定列的值进行排序。,4.2基本子句查询:,4.2.1 SELECT子句,SELECT子句用于定义查询结果集中的列。常将SELECT后面的内容称作选择列表。选择列表是一系列以逗号分隔的表达式。每个表达式定义结果集中的一列。结果集中列的排列顺序与选择列表中表达式的排列顺序相同。选择列表可以有如下不同的表达方式。,1使用星号(*)输出所有列,【例4-1】查询“学生”表的所有信息。 SELECT * FROM Xs,2输出特定列,选择列表中的表达式是多个以逗号分隔的列名。结果集中列的排列顺序与选择列表中表达式的排列顺序相同。 【例4-2】查询“学生”表

4、中学生的学号、姓名和出生日期。 SELECT Xh,Xm,Csrq FROM Xs,3计算列,【例4-3】查询“学生”表中学生的学号、姓名和年龄。 SELECT Xh,Xm,Year(GETDATE()-YEAR(csrq) FROM Xs 注意:GETDATE()函数用于获取系统日期,Year()函数用于获取日期中的年份。,4给列起别名,可以给列起别名,尤其是当表中的一个或多个列是计算列的时候,别名将显示在字段列表中。 给列起别名有三种表达方式。 1)计算表达式 AS 别名 2)计算表达式 别名 3)别名 = 计算表达式。,【例4-4】查询“学生”表中学生的学号、姓名和年龄,要求字段列表用中

5、文名字。 SELECT Xh as 学号,Xm 姓名,年龄=Year(GETDATE()-YEAR(csrq) FROM Xs,5去掉重复元组,当选择表中部分列的时候,可能在结果集中出现相同的记录,可以在字段列表前加关键字DISTINCT来去掉重复的记录。 【4-5】查询“成绩”表中已学过课程的学生学号。 SELECT DISTINCT Xh FROM Cj,6显示前n条记录,在字段列表前加关键字TOP n,则查询结果集中只显示表中前n条记录;如果在字段列表前加关键字TOP n PERCENT,则查询结果集中只显示表中前面n%条记录。 【例4-6】查询“成绩”表前5条记录。 SELECT TO

6、P 5 * FROM Cj,4.2.2 FROM子句,FROM 子句指定了数据的来源,它是可以用逗号分隔的表名和 JOIN子句的列表。其中JOIN子句用于两个或多个表之间的联接 还可以在FROM子句中为表指定别名来提高可读性。如果为表分配了别名,那么 T-SQL 语句中对该表的所有显式引用都必须使用别名,而不能使用表名。 给表起别名有两种表达方式: 1)表名 AS 别名 2)表名 别名,4.2.3 WHERE子句,WHERE是筛选器。它指定一系列查询条件,只有那些满足条件的行才能包含在结果集中。 WHERE子句中的限定条件可包括下面几种形式:,1比较搜索条件,使用比较运算符用于比较两个表达式的

7、大小,例如:=(等于)、(不等于)、(大于)运算符。 【例4-7】从成绩表中查询学号为09101001的学生的考试成绩。 SELECT * FROM Cj WHERE Xh = 09101001,2范围搜索条件,使用BETWEENAND(或NOT BETWEENAND)查找属性值在(或不在)指定范围内的所有记录,该范围包含下限和上限的值。 【例4-8】从成绩表中查询优秀(成绩在90,100之间)的成绩信息。 SELECT * FROM Cj WHERE Cj BETWEEN 90 AND 100,3列表搜索条件,可以使用IN(或NOT IN)来查找属性值属于(或不属于)指定集合的记录。 【例4

8、-9】从“成绩”表中查询修了课程号为1和4的课程的学生学号。 SELECT DISTINCT Xh FROM Cj WHERE Kch IN(1,4),4搜索条件中的模式匹配,如果不能给出精确的查询条件,可以使用LIKE(或NOT LIKE)来查找与指定模式相匹配(或不匹配)的字符串、日期或时间值,实现模糊查询。 其中LIKE(或NOT LIKE)后的字符串包含值要匹配的模式,可以包含如下四种通配符的任意组合。,1)%:包含零个或多个字符的任意字符串。例如:a%b,acb、aghdb、ab都满足该匹配串。 2)_:表示单个字符。例如:a_b,acb、adb、aeb都满足该匹配串。 3):指定范

9、围(例如 c-e)或集合(例如 cde)内的任何单个字符。例如:ac-eb或acdeb,acb、adb、aeb都满足该匹配串,afb则不满足该匹配串。 4):不在指定范围(例如 c-e)或集合(例如 cde)内的任何单个字符。ac-eb或acdeb,acb、adb、aeb都不满足该匹配串,afb则满足该匹配串。,【例4-10】从“学生”表中查询99101班的学生信息(学号前5位为班号)。 SELECT * FROM Xs WHERE Xh LIKE 09101%,5NULL比较搜索条件,可以使用IS NULL(或IS NOT NULL)来判断某列是空值(或非空)。 【例4-11】从“课程”表中

10、查询还没有分配给老师教学任务的课程信息。 SELECT * FROM Kc WHERE Jsh IS NULL,6逻辑运算符,可以使用逻辑运算符AND、OR、NOT连接上述条件构成一个组合条件来进行查询。 【例4-12】从“成绩”表中查询09101班的选修了课程号是4的课程的成绩。 SELECT * FROM Cj WHERE Xh Like(09101%) AND Kch=4,4.2.4 ORDER BY子句,可以使用ORDER BY 子句按对查询结果按照一列或多列进行排序。 排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果没有指定排序的顺序是升序还是降序,系统将默认为升序(

11、ASC)。 当按多列排序时,先按前面的列排序,如果值相同再按后面的列排序。,【例4-13】查询“学生”表中的学生信息,查询结果集按性别升序排列。 SELECT * FROM Xs ORDER BY Xb,【例4-14】查询“学生”表中的学生信息,查询结果集先按性别升序排列,然后再按照年龄升序(即按出生日期降序)排列。为了方便查看结果,输出“年龄”计算列。 SELECT *,年龄=Year(GETDATE()-YEAR(csrq) FROM Xs ORDER BY Xb,Csrq DESC,4.2.5 INTO子句,INTO子句用于将查询结果保存成一个新表。新表结构由选择列表中表达式的属性定义。

12、 【例4-15】查询“学生”表中的学号、姓名、年龄,将查询结果存放在新建表“学生年龄”中。 SELECT Xh as 学号,Xm as 姓名,年龄=Year(GETDATE()-YEAR(csrq) INTO 学生年龄 FROM Xs,4.2.6 使用UNION合并结果集,使用UNION语句可以实现将两个或多个SELECT 语句的结果组合成一个结果集。要求参加UNION运算的各结果集的列数必须相同,对应的数据类型必须相同。UNION 的结果集列名与第一个SELECT语句的结果集中的列名相同。 默认情况下,UNION 运算符将从结果集中删除重复的行。,【例4-16】查询“成绩”表中成绩大于等于9

13、0分和小于60分的记录。 SELECT * FROM Cj WHERE Cj=90 UNION SELECT * FROM Cj WHERE Cj60,4.3数据汇总:,用户经常需要对查询结果集进行统计,例如求和、平均值、最大值、最小值、个数等。这些统计功能可以通过聚合函数、GROUP子句、COMPUTE子句来实现。,4.3.1 使用聚合函数,使用聚合函数可以在查询结果集中生成汇总值。除了COUNT(*)函数外,其他汇总函数都处理单个字段中全部符合条件的值以生成一个结果集。聚合函数主要有: COUNT(*)统计记录的个数。 COUNT()统计一列中值的个数。 SUM()统计一列中值的和(该列必

14、须是数值型)。 AVG()统计一列值的平均值(该列必须是数值型)。 MAX()求一列值的最大值。 MIN()求一列值的最小值。 其中在*号和前面可以使用DISTINCT或ALL关键字。DISTINCT用于去掉指定列中重复的信息,ALL是不取消重复信息,默认值是ALL。,【例4-17】查询“学生”表中的学生总数。 SELECT COUNT(*) AS 学生总数 FROM Xs 【例4-18】查询“成绩”表中09101班所学过的1号课程的总分。 SELECT SUM(Cj) AS 总分 FROM Cj WHERE Xh LIKE 09101% AND Kch = 1,【例4-19】查询“成绩”表中

15、学号是09101001的学生的所有课程的平均分。 SELECT AVG(Cj) AS 平均分 FROM Cj WHERE Xh = 09101001 【例4-20】查询“成绩”表中1号课程的最高分。 SELECT MAX(Cj) AS 最高分 FROM Cj WHERE Kch = 1,【例4-21】查询“学生”表中的最小年龄。 SELECT MIN(Year(GETDATE()-YEAR(csrq) AS 年龄 FROM Xs,4.3.2 使用GROUP BY子句,GROUP BY 子句用来将查询结果集按某一列或多列分成多个组。GROUP BY后跟用于分组的字段名称列表(也叫分组列表),它决

16、定查询结果分组的依据和顺序。GROUP BY子句将按照分组列表中指定的字段进行分组,将该字段相同的记录组成一组,对每一组记录进行汇总计算并生成一条记录。,【例4-22】查询“学生”表中每个班的平均年龄。 SELECT LEFT(Xh,5) AS 班级,AVG(Year(GETDATE()-YEAR(csrq) AS 平均年龄 FROM Xs GROUP BY LEFT(Xh,5) 注意:LEFT(Xh,5)函数用于求Xh字段中的前5个字符。SELECT子句中的列名必须是GROUP BY子句中已有的列名或计算列,例如LEFT(Xh,5)。,【例4-23】查询“学生”表中每个专业的男生和女生的平均年龄。 SELECT Zyh,Xb,AVG(Year(GETDATE()-YEAR(csrq) AS 平均年

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号