编辑: 苹果的酸 | 2017-08-31 |
第三章 关系数据库标准语言SQL(续1)
第三章 关系数据库标准语言SQL 3.
1 SQL概述3.2 学生-课程数据库3.3 数据定义3.4 数据查询3.5 数据更新3.6 空值的处理3.7 视图3.8 小结 3.4 数据查询 3.4.1 单表查询3.4.2 连接查询3.4.3 嵌套查询3.4.4 集合查询3.4.5基于派生表的查询3.4.5 Select语句的一般形式 3.4.2 连接查询 连接查询:同时涉及两个以上的表的查询连接条件或连接谓词:用来连接两个表的条件 一般格式:[.] [.][.] BETWEEN [.] AND [.]连接字段:连接谓词中的列名称连接条件中的各连接字段类型必须是可比的,但名字不必相同 连接查询(续) 1.等值与非等值连接查询 2.自身连接3.外连接4.多表连接 1. 等值与非等值连接查询 等值连接:连接运算符为=[例3.49] 查询每个学生及其选修课程的情况 SELECT Student.*, SC.FROM Student, SC WHERE Student.Sno = SC.Sno;
等值与非等值连接查询(续) Student.Sno Sname Ssex Sage Sdept SC.Sno Cno Grade
201215121 李勇 男20 CS
201215121 1
92 201215121 李勇 男20 CS
201215121 2
85 201215121 李勇 男20 CS
201215121 3
88 201215122 刘晨 女19 CS
201215122 2
90 201215122 刘晨 女19 CS
201215122 3
80 查询结果: 连接操作的执行过程 (1)嵌套循环法(NESTED-LOOP)首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组.表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组.重复上述操作,直到表1中的全部元组都处理完毕注:连接操作的执行过程,在
第九章 关系查询处理和查询优化中将比较详细地讲解,在爱课程网9.1节中还有《连接操作的实现 》的 动画.这里只是先简单介绍一下. 连接操作的执行过程(续) (2)排序合并法(SORT-MERGE)常用于=连接首先按连接属性对表1和表2排序对表1的第一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组.当遇到表2中第一条大于表1连接字段值的元组时,对表2的查询不再继续 连接操作的执行过程(续) (2)排序合并法(续)找到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组.直接遇到表2中大于表1连接字段值的元组时,对表2的查询不再继续重复上述操作,直到表1或表2中的全部元组都处理完毕为止 连接操作的执行过程(续) (3)索引连接(INDEX-JOIN)对表2按连接字段建立索引对表1中的每个元组,依次根据其连接字段值查询表2的索引,从中找到满足条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组 等值与非等值连接查询(续) 自然连接[例3.50] 对[例3.49]用自然连接完成. SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.Sno;
等值与非等值连接查询(续) 一条SQL语句可以同时完成选择和连接查询,这时WHERE子句是由连接谓词和选择谓词组成的复合条件.[例3.51 ]查询选修2号课程且成绩在90分以上的所有学生的学号和姓名. SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno='