数据库系统原理及应用教程 第4版 教学课件 ppt 作者 刘瑞新 第6章-2

上传人:E**** 文档编号:89517649 上传时间:2019-05-26 格式:PPT 页数:43 大小:791KB
返回 下载 相关 举报
数据库系统原理及应用教程 第4版 教学课件 ppt 作者 刘瑞新 第6章-2_第1页
第1页 / 共43页
数据库系统原理及应用教程 第4版 教学课件 ppt 作者 刘瑞新 第6章-2_第2页
第2页 / 共43页
数据库系统原理及应用教程 第4版 教学课件 ppt 作者 刘瑞新 第6章-2_第3页
第3页 / 共43页
数据库系统原理及应用教程 第4版 教学课件 ppt 作者 刘瑞新 第6章-2_第4页
第4页 / 共43页
数据库系统原理及应用教程 第4版 教学课件 ppt 作者 刘瑞新 第6章-2_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《数据库系统原理及应用教程 第4版 教学课件 ppt 作者 刘瑞新 第6章-2》由会员分享,可在线阅读,更多相关《数据库系统原理及应用教程 第4版 教学课件 ppt 作者 刘瑞新 第6章-2(43页珍藏版)》请在金锄头文库上搜索。

1、6.4 .1 T-SQL 数据查询语句 6.4 . 2 简单查询操作 6.4 . 3 连接查询操作 6.4 . 4 嵌套查询操作 6.4 . 5 使用函数和分组查询操作 6.4 . 6 使用计算和汇总查询操作,6.4 数据查询操作,6.4 . 1 T-SQL 数据查询语句,1. 数据检索语句的语句格式 SELECT查询列 INTO新表名 FROM数据源 WHERE元组条件表达式 GROUP BY HAVING ORDER BY COMPUTE统计列组BY表达式,(1) SELECT子句,SELECT ALL|DISTINCT TOP PERCENT 查询列为: 查询列:=*|表或视图.*|列名

2、或表达式 AS列别名 |列别名=表达式,所有行,表或视图的全部列,全部列,返回结果中的百分之数值行记录,结果中的前数值行,代替出现在结果集中的列名或表达式,结果中仅有唯一行,(2) INTO子句和FROM子句,INTO子句将查询结果加到创建表中, 临时表的表名前加“#”字。 FROM语法格式为: FROM数据源组 数据源的语法为: 数据源:=表名AS表别名 |视图名AS视图别名 |嵌套的SELECT语句AS别名 |连接表 连接表的语法为: 连接表:= ON | CROSSJOIN | := INNER| LEFT|RIGHT|FULLOUTER JOIN,笛卡儿积运算,内连接,左外连接,全外连

3、接,右外连接,(3) WHERE子句: WHERE| (4) GROUP BY子句:GROUP BY ALL分组表达式组 (5) HAVING子句: HAVING分组或汇总筛选条件 (6) ORDER BY:ORDER BY排序项ASC|DESC,n (7) COMPUTE子句:在结果集中后将汇总值放入摘要列,COMPUTE与BY配合,起到换行控制和分段小计的作用。 COMPUTE统计函数组BY分组项 其中:BY分组项表示在结果集中产生换行控制及分段小计。COMPUTE BY必须和ORDER BY配合使用。,2. SELECT语句的操作符,(1) 算术操作符 +(加号)、(减号)、*(乘号)和

4、 /(除号)。 (2) 比较操作符 =(等于)、(大于)、=(大于等于)、!=(不等于)、(小于大于)、!(不大于)和 !(不小于),共9种操作符。,(3) 逻辑操作符,(4) 组合查询操作符和其他SQL操作符,UNION:并查询,并在结果集中去掉重复行。格式为: 查询1 UNION 查询2 2) *:取全部字段。格式为: * 或表名.* 3) ALL:全部。保留重复值(有统计函数时要求计算重复值)。格式为: ALL字段或 ALL字段组,6.4 . 2 简单查询操作,学生课程库:学生(学号,姓名,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).,简单查询:查询过

5、程中只涉及到一个表的查询语句。 【例】求数学系学生的学号和姓名。 SELECT 学号,姓名 FROM 学生 WHERE 所在系=数学系 【例】求选修了课程的学生学号。 SELECT DISTINCT 学号 FROM 选课,例子,【例】求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。 SELECT 学号,成绩 FROM 选课 WHERE 课程号=C1 ORDER BY 成绩 DESC,学号 ASC 【例】求选修课程C1且成绩在8090之间的学生学号和成绩,并将成绩乘以系数0.8输出。 SELECT 学号,成绩*0.8 FROM 选课 WHERE

6、课程号 = C1 AND 成绩 BETWEEN 80 AND 90,学生课程库:学生(学号,姓名,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).,例子,【例】求数学系或计算机系姓张的学生的信息。 SELECT * FROM 学生 WHERE 所在系 IN ( 数学系,计算机系 ) AND 姓名 LIKE 张% 【例】求缺少了成绩的学生的学号和课程号。 SELECT 学号,课程号 FROM 选课 WHERE 成绩 IS NULL,查询实例,设图书借阅数据库中包括: 图书(书号,类别,出版社,作者,书名,定价); 读者(书证号,姓名,单位,性别,电话); 借阅(书

7、号,读者书证号,借阅日期). 【例】将计算机类的书存入永久的计算机图书表,将借书日期在99年以前的借阅记录存入临时的超期借阅表。 SELECT * INTO 计算机图书 FROM 图书 WHERE 类别=计算机 GO SELECT * INTO #超期借阅 FROM 借阅 WHERE 借阅日期1999-01-01 GO,例设学生和选课表的数据如下,它们的交叉连接、等值连接和自然连接的结果如下。,学生 选课,交叉连接,6.4 . 3 连接查询操作,学生 选课,等值连接(学生.学号=选课.学号),等值连接(学生.学号=选课.学号),自然连接,1. 连接条件通过WHERE子句表达:连接条件和元组选择

8、条件之间用AND操作符衔接。(标准写法),等值连接和非等值连接 . . 比较运算符:=、=、= 和!=;列名称为连接字段。,【例】查询每个学生的情况以及他(她)所选修的课程。 SELECT 学生.*,选课.* FROM 学生,选课 WHERE 学生.学号=选课.学号,例子,【例】求学生的学号、姓名、选修的课程名及成绩。 SELECT 学生.学号,姓名,课程名,成绩 FROM 学生,课程,选课 WHERE 学生.学号=选课.学号 AND 课程.课程号=选课.课程号 【例】求选修C1课程且成绩为90分以上的学生学号、姓名及成绩。 SELECT 学生.学号,姓名,成绩 FROM 学生,选课 WHER

9、E 学生.学号=选课.学号 AND 课程号=C1 AND 成绩90,学生课程库:学生(学号,姓名,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).,2.用JOIN表示连接条件(T-SQL写法),内连接:列出与连接条件匹配的数据行 左外部连接:在结果中保留连接表达式左表中的非匹配记录;右外部连接:在结果中保留连接表达式右表中的非匹配记录。 全外连接:在结果中保留连接表达式两边表中的非匹配记录,职工表 部门表,内连接的结果集,内连接的结果集,职工表 部门表,左外部连接的结果集,左外部连接的结果集,职工表 部门表,右外部连接的结果集,右外部连接的结果集,职工表 部门表

10、,内连接: SELECT 职工.*,部门名称,电话 FROM 职工 INNER JOIN 部门 ON 职工.所在部门= 部门.部门号 左外部连接: SELECT 职工.*,部门名称,电话 FROM 职工 LEFT OUTER JOIN 部门 ON 职工.所在部门= 部门.部门号 右外部连接: SELECT 职工.*,部门名称,电话 FROM 职工 RIGHT OUTER JOIN 部门 ON 职工.所在部门 =部门.部门号,【例】用SQL表达职工和部门之间的内连接、左外部连接和右外部连接的语句,【例】求学生的学号、姓名、选修的课程名及成绩。 SELECT 学生.学号,姓名,课程名,成绩 FRO

11、M 学生 INNER JOIN 选课 on 学生.学号=选课.学号 INNER JOIN 课程 on 课程.课程号=选课.课程号 【例】求选修C1课程且成绩为90分以上的学生学号、姓名及成绩。 SELECT 学生.学号,姓名,成绩 FROM 学生 INNER JOIN 选课 on 学生.学号=选课.学号 WHERE 课程号=C1 AND 成绩90,【例】查询借书者的书证号,姓名,单位,所借书号,书名和借阅日期。 SELECT 读者.书证号,读者.姓名,读者.单位,借阅.书号,图书.书名,借阅.借阅日期 FROM 读者 INNER JOIN 借阅 ON 读者.书证号=借阅.读者书证号 INNER

12、 JOIN 图书 ON 借阅.书号= 图书.书号 ORDER BY 读者.书证号 ASC,图书(书号,类别,出版社,作者,书名,定价); 读者(书证号,姓名,单位,性别,电话); 借阅(书号,读者书证号,借阅日期).,查询例子,6.4 . 4嵌套查询,1.使用IN操作符的嵌套查询 【例】求选修了高等数学的学生学号和姓名。 SELECT 学号,姓名 FROM 学生 WHERE 学号 IN ( SELECT 学号 FROM 选课 WHERE 课程号 IN ( SELECT 课程号 FROM 课程 WHERE 课程名=高等数学 );,学生课程库:学生(学号,姓名,年龄,所在系); 课程(课程号,课程

13、名,先行课); 选课(学号,课程号,成绩).,高等数学的课程号,选高等数学的学生学号,【例】求C1课程的成绩高于张三的学生学号和成绩。 SELECT 学号,成绩 FROM 选课 WHERE 课程号=C1 AND 成绩 ( SELEC 成绩 FROM 选课 WHERE 课程号=C1AND 学号= (SELECT 学号 FROM 学生 WHERE 姓名=张三);,张三的学号,张三C1课的成绩,学生课程库:学生(学号,姓名,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).,2 使用比较符嵌套查询,3使用ANY或ALL操作符的嵌套查询,格式为:字段比较符ANY|ALL子

14、查询,例子,【例】求其他系中比计算机系某一学生年龄小的学生。 SELECT * FROM 学生 WHERE 年龄 计算机系;,学生课程库:学生(学号,姓名,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).,计算机系学生的年龄,4 使用EXISTS操作符的嵌套查询,【例】求没有选修C2课程的学生姓名。 SELECT 姓名 FROM 学生 WHERE NOT EXISTS (SELECT * FROM 选课 WHERE 学生.学号=选课.学号 AND 课程号=C2);,该学生选C2课的记录,查询例子,【例】查询借了书的读者。 SELECT * FROM 读者 WHERE EXISTS (SELECT * FROM 借阅 WHERE 读者.书证号=借阅.读者书证号) 或: SELECT * FROM 读者 WHERE 书证号 IN (SELECT 读者书证号 FROM 借阅),图书(书号,类别,出版社,作者,书名,定价); 读者(书证号,姓名,单位,性别,电话); 借阅(书号,读者书证号,借阅日期).,统计函数一览表,6.4 . 5 使用函数和分组查询操作,例子,【例】求选修了课程的学生人数。 SELECT COUNT(DISTINCT 学号) FROM 选课 【例】求学生学号及选课门数

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

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

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