江西师大软件学院

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 6 7 6
Ccredit 4 2 4 3 4 2 4
An Introduction to Database System
自身连接(续)
SECOND表(Course表)
Cno 1 2 3 4 5 6 7 Cname 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言 Cpno 5 1 6 7 Ccredit 4 2 4 3 4 2 4
An Introduction to Database System
连接查询 (续)

连接字段

连接谓词中的列名称为连接字段
连接条件中的各连接字段类型必须是可比的, 但不必是相同的
An Introduction to Database System
连接操作的执行过程

嵌套循环法(NESTED-LOOP)
多表连接
[例36] 查询每个学生的学号、姓名、选修的课程名及成 绩。 SELECT Student.Sno , Sname , Cname , Grade FROM Student,SC,Course WHERE Student.Sno = SC.Sno and SC.Cno = Course.Cno; 结果:
6
An Introduction to Database System
自身连接(续)
查询结果
cno cpno
1 3 5
7 5 6
An Introduction to Database System
四、外连接(Outer Join)

外连接与普通连接的区别

普通连接操作只输出满足连接条件的元组

外连接操作以指定表为连接主体,将主体表

首先在表1中找到第一个元组,然后从头开始扫描表2, 逐一查找满足连接件的元组,找到后就将表 1 中的第 一个元组与该元组拼接起来,形成结果表中一个元组。 表2全部查找完后,再找表1中第二个元组,然后再从 头开始扫描表 2 ,逐一查找满足连接条件的元组,找 到后就将表 1 中的第二个元组与该元组拼接起来,形 成结果表中一个元组。 重复上述操作,直到表1中的全部元组都处理完毕
SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno = SECOND.Cno;
An Introduction to Database System
自身连接(续)
FIRST表(Course表)
Cno 1 2 3 4 5 6 7 Cname 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言 Cpno 5
An Introduction to Database System
非等值连接查询
连接运算符 不是 = 的连接操作
[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名 2>
比较运算符:>、<、>=、<=、!=
[<表名1>.]<列名1> BETWEEN [<表名2>.]<列名
2> AND [<表名2>.]<列名3>
An Introduction to Database System
三、自身连接

一个表与其自己进行连接,称为表的自身连接
需要给表起别名以示区别 由于所有属性名都是同名属性,因此必须使用


别名前缀
An Introduction to Database System
自身连接(续)
[例 34] 查询每一门课的间接先修课(即 先修课的先修课)
Sage Sdept
20 19 18 19 CS IS MA IS
An Introduction to Database System
等值连接
SC表
Sno
95001 95001 95001 95002 95002
Байду номын сангаас
Cno
1 2 3 2 3
Grade
92 85 88 90 80
An Introduction to Database System
20 20 20 19 19 18 19
CS CS CS IS IS MA IS
1 2 3 2 3
92 85 88 90 80
An Introduction to Database System
外连接(续)




在表名后面加外连接操作符 (*) 或 (+) 指定非 主体表 非主体表有一“万能”的虚行,该行全部由 空值组成 虚行可以和主体表中所有不满足连接条件的 元组进行连接 由于虚行各列全部是空值,因此与虚行连接 的结果中,来自非主体表的属性值全部是空 值
1 2 3 2 3
92 85 88 90 80
An Introduction to Database System
自然连接
等值连接的一种特殊情况,把目标列中 重复的属性列去掉。 [例33] 对[例32]用自然连接完成。

SELECT Student.Sno,Sname,Ssex, Sage, Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.Sno;
An Introduction to Database System
外连接(续)


左外连接
外连接符出现在连接条件的左边


右外连接
外连接符出现在连接条件的右边
An Introduction to Database System
五、复合条件连接
WHERE子句中含多个连接条件时,称为复合条件连接
[例35]查询选修2号课程且成绩在90分以上的所有学生的 学号、姓名
An Introduction to Database System
排序合并法

找到表 1 的第二条元组,然后从刚才的中断点处继
续顺序扫描表 2 ,查找满足连接条件的元组,找到 后就将表 1中的第一个元组与该元组拼接起来,形 成结果表中一个元组。直接遇到表2中大于表1连接 字段值的元组时,对表2的查询不再继续
加表名前缀。引用唯一属性名时可以加也可以省略 表名前缀。
An Introduction to Database System
等值连接
假设Student表、SC表分别有下列数据: Student表
Sno
95001 95002 95003 95004
Sname
李勇 刘晨 王敏 张立
Ssex
男 女 女 男
SELECT Student.*,SC.*
FROM
Student,SC
WHERE Student.Sno = SC.Sno;
An Introduction to Database System
等值连接

连接运算符为 = 的连接操作

[<表名1>.]<列名1> = [<表名2>.]<列名2>

任何子句中引用表 1 和表 2 中同名属性时,都必须
Student.Sno 95001 95001 95001 95002 95002 Sname 李勇 李勇 李勇 刘晨 刘晨 Cname Grade 数据库 92 数学 85 信息系统 88 数学 90 An Introduction to Database System 信息系统 80
3.3 查
嵌套查询(续)
SELECT Sname 外层查询/父查询 FROM Student WHERE Sno IN (SELECT Sno 内层查询/子查询 FROM SC WHERE Cno= ' 2 ');
An Introduction to Database System
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 */
数据库系统概论
An Introduction to Database System
第三章 关系数据库标准语言SQL
(续1)
江西师大软件学院
An Introduction to Database System
3.3 查



3.3.1 概述 3.3.2 单表查询 3.3.3 连接查询 3.3.4 嵌套查询 3.3.5 集合查询 3.3.6 小结
An Introduction to Database System
3.3.3 连接查询
同时涉及多个表的查询称为连接查询
用来连接两个表的条件称为连接条件或连接谓词 一般格式:

[<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>
比较运算符:=、>、<、>=、<=、!=

[<表名1>.]<列名1> BETWEEN [<表名2>.]<列名 2> AND [<表名2>.]<列名3>
An Introduction to Database System
嵌套查询(续)

嵌套查询概述

一个SELECT-FROM-WHERE语句称为一 个查询块 将一个查询块嵌套在另一个查询块的 WHERE子句或HAVING短语的条件中的查 询称为嵌套查询

An Introduction to Database System

重复上述操作,直到表1或表2中的全部元组都处理
完毕为止
An Introduction to Database System
索引连接(INDEX-JOIN)


对表2按连接字段建立索引
对表 1 中的每个元组,依次根据其连接字段
值查询表 2的索引,从中找到满足条件的元
组,找到后就将表 1中的第一个元组与该元
等值连接
结果表
Student.Sno Sname Grade Ssex Sage Sdept SC.Sno Cno
95001 95001 95001 95002 95002
李勇 李勇 李勇 刘晨 刘晨
男 男 男 女 女
20 20 20 19 19
CS CS CS IS IS
95001 95001 95001 95002 95002
An Introduction to Database System


排序合并法(SORT-MERGE)
常用于=连接

首先按连接属性对表1和表2排序 对表1的第一个元组,从头开始扫描表2,顺序查找 满足连接条件的元组,找到后就将表 1中的第一个 元组与该元组拼接起来,形成结果表中一个元组。 当遇到表2中第一条大于表1连接字段值的元组时, 对表2的查询不再继续
An Introduction to Database System
外连接(续)
结果:
Student.Sno Cno Grade Sname Ssex Sage Sdept
95001 95001 95001 95002 95002 95003 95004
李勇 李勇 李勇 刘晨 刘晨 王敏 张立
男 男 男 女 女 女 男



3.3.1 概述 3.3.2 单表查询 3.3.3 连接查询 3.3.4 嵌套查询 3.3.5 集合查询 3.3.6 小结
An Introduction to Database System
3.3.4 嵌套查询

嵌套查询概述
嵌套查询分类
嵌套查询求解方法
引出子查询的谓词
中不满足连接条件的元组一并输出
An Introduction to Database System
外连接(续)
[例 33] 查询每个学生及其选修课程的情况包括没有选 修课程的学生----用外连接操作
SELECT Student.Sno,Sname,Ssex, Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.Sno(*);
组拼接起来,形成结果表中一个元组
An Introduction to Database System
连接查询 (续)
SQL中连接查询的主要类型

广义笛卡尔积 等值连接(含自然连接) 非等值连接查询 自身连接查询

外连接查询
复合条件连接查询
An Introduction to Database System
一、广义笛卡尔积

不带连接谓词的连接
很少使用
SELECT Student.* , SC.* FROM Student, SC
例:
An Introduction to Database System
二、等值与非等值连接查询
等值连接、自然连接、非等值连接
[例32] 查询每个学生及其选修课程的情
况。
相关文档
最新文档