数据库第3章关系数据库标准语言sql

上传人:san****019 文档编号:70239478 上传时间:2019-01-16 格式:PPT 页数:94 大小:647.51KB
返回 下载 相关 举报
数据库第3章关系数据库标准语言sql_第1页
第1页 / 共94页
数据库第3章关系数据库标准语言sql_第2页
第2页 / 共94页
数据库第3章关系数据库标准语言sql_第3页
第3页 / 共94页
数据库第3章关系数据库标准语言sql_第4页
第4页 / 共94页
数据库第3章关系数据库标准语言sql_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《数据库第3章关系数据库标准语言sql》由会员分享,可在线阅读,更多相关《数据库第3章关系数据库标准语言sql(94页珍藏版)》请在金锄头文库上搜索。

1、An Introduction to Database System,1,中国地质大学信息工程学院,数据库系统概论 An Introduction to Database System 第三章 关系数据库标准语言SQL (续1),An Introduction to Database System,2,3.4.2 连接查询,同时涉及多个表的查询称为连接查询 用来连接两个表的条件称为连接条件或连接谓词 一般格式: . . 比较运算符:=、=、. BETWEEN . AND .,An Introduction to Database System,3,连接查询 (续),连接字段 连接谓词中的列名称

2、为连接字段 连接条件中的各连接字段类型必须是可比的,但不必是相同的,An Introduction to Database System,4,连接操作的执行过程,嵌套循环法(NESTED-LOOP) 首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。 表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组。 重复上述操作,直到表1中的全部元组都处理完毕,An Introduction to Data

3、base System,5,排序合并法(SORT-MERGE),常用于=连接 首先按连接属性对表1和表2排序 对表1的第一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表2中第一条大于表1连接字段值的元组时,对表2的查询不再继续,An Introduction to Database System,6,排序合并法,找到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表2中大于表1连接字段值的元组时,对表2的

4、查询不再继续 重复上述操作,直到表1或表2中的全部元组都处理完毕为止,An Introduction to Database System,7,连接查询 (续),SQL中连接查询的主要类型 等值连接(含自然连接) 非等值连接查询 自身连接查询 外连接查询 复合条件连接查询,An Introduction to Database System,8,一、等值与非等值连接查询,等值连接、自然连接、非等值连接 例33 查询每个学生及其选修课程的情况。 SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno = SC.Sno;,An Introdu

5、ction to Database System,9,等值连接,连接运算符为 = 的连接操作 . = . 任何子句中引用表1和表2中同名属性时,都必须加表名前缀。引用唯一属性名时可以加也可以省略表名前缀。,An Introduction to Database System,10,等值连接,假设Student表、SC表分别有下列数据: Student表,An Introduction to Database System,11,等值连接,SC表,An Introduction to Database System,12,等值连接,例33的结果表 Student.Sno Sname Ssex S

6、age Sdept SC.Sno Cno Grade 95001 李勇 男 20 CS 95001 1 92 95001 李勇 男 20 CS 95001 2 85 95001 李勇 男 20 CS 95001 3 88 95002 刘晨 女 19 IS 95002 2 90 95002 刘晨 女 19 IS 95002 3 80,An Introduction to Database System,13,自然连接,等值连接的一种特殊情况,把目标列中重复的属性列去掉。 例34 对例33用自然连接完成。 SELECT Student.Sno,Sname,Ssex,Sage, Sdept,Cno,

7、Grade FROM Student,SC WHERE Student.Sno = SC.Sno;,结果表中去除了SC.Sno,An Introduction to Database System,14,非等值连接查询,连接运算符 不是 = 的连接操作 . 比较运算符:、=、. BETWEEN . AND .,An Introduction to Database System,15,二、自身连接,一个表与其自己进行连接,称为表的自身连接 需要给表起别名以示区别 由于所有属性名都是同名属性,因此必须使用别名前缀,An Introduction to Database System,16,自身连

8、接(续),例35 查询每一门课的间接先修课(即先修课的先修课) FIRST表(Course表),An Introduction to Database System,17,自身连接(续),SECOND表(Course表),An Introduction to Database System,18,自身连接(续),SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno = SECOND.Cno; 查询结果,An Introduction to Database System,19,四、外连接(Ou

9、ter Join),外连接与普通连接的区别 普通连接操作只输出满足连接条件的元组 外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出,An Introduction to Database System,20,外连接(续),例 36 查询每个学生及其选修课程的情况包括没有选修课程的学生-用外连接操作 SELECT Student.Sno,Sname,Ssex, Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.Sno(*);,外连接操作符(*),An Introduction to Database Sys

10、tem,21,外连接(续),结果: Student.Sno Sname Ssex Sage Sdept Cno Grade 95001 李勇 男 20 CS 1 92 95001 李勇 男 20 CS 2 85 95001 李勇 男 20 CS 3 88 95002 刘晨 女 19 IS 2 90 95002 刘晨 女 19 IS 3 80 95003 王敏 女 18 MA 95004 张立 男 19 IS,An Introduction to Database System,22,五、复合条件连接,WHERE子句中含多个连接条件时,称为复合条件连接 例37查询选修2号课程且成绩在90分以上的

11、所有学生的 学号、姓名 SELECT Student.Sno, student.Sname FROM Student, SC WHERE Student.Sno = SC.Sno AND /* 连接谓词*/ SC.Cno= 2 AND SC.Grade 90; /* 其他限定条件 */,An Introduction to Database System,23,多表连接,例38 查询每个学生的学号、姓名、选修的课程名及成绩。 SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course WHERE Student.Sno = SC.Sn

12、o and SC.Cno = Course.Cno; 结果: Student.Sno Sname Cname Grade 95001 李勇 数据库 92 95001 李勇 数学 85 95001 李勇 信息系统 88 95002 刘晨 数学 90 95002 刘晨 信息系统 80,An Introduction to Database System,24,3.4.3 嵌套查询,嵌套查询概述 嵌套查询分类 嵌套查询求解方法 引出子查询的谓词,An Introduction to Database System,25,嵌套查询(续),嵌套查询概述 一个SELECT-FROM-WHERE语句称为一个

13、查询块 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询,An Introduction to Database System,26,嵌套查询(续),SELECT Sname 外层查询/父查询 FROM Student WHERE Sno IN (SELECT Sno 内层查询/子查询 FROM SC WHERE Cno= 2 );,An Introduction to Database System,27,嵌套查询(续),子查询的限制 不能使用ORDER BY子句 层层嵌套方式反映了 SQL语言的结构化 有些嵌套查询可以用连接运算替代,An Intr

14、oduction to Database System,28,一、带有IN谓词的子查询,例39 查询与“刘晨”在同一个系学习的学生。 此查询要求可以分步来完成 确定“刘晨”所在系名 SELECT Sdept FROM Student WHERE Sname= 刘晨 ; 结果为: Sdept IS,An Introduction to Database System,29,带有IN谓词的子查询(续), 查找所有在IS系学习的学生。 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept= IS ; 结果为: Sno Sname Sdept 95001 刘晨

15、 IS 95004 张立 IS,An Introduction to Database System,30,构造嵌套查询,将第一步查询嵌入到第二步查询的条件中 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname= 刘晨 ); 此查询为不相关子查询。DBMS求解该查询时也是分步 去做的。求解方法:由里向外。,An Introduction to Database System,31,带有IN谓词的子查询(续),用自身连接完成本查询要求 SELECT S1.Sno,S1.Sname,S1.Sdept FROM Stud

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

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

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