文档介绍:数据库系统概论第五版
第三章 关系数据库标准语言SQL
3、1 SQL概述
3、2 学生-课程数据库
3、3 数据定义
3、4 数据查询
3、5 数据更新
3、6 空值得处理
3、7 视图
3、8 小结
3、4 数据查、Sno=SC、Sno AND
SCo=' 2 ' AND SC、Grade>90;
执行过程:
先从SC中挑选出Cno='2'并且Grade>90得元组形成一个中间关系
再和Student中满足连接条件得元组进行连接得到最终得结果关系
连接查询(续)
1、等值与非等值连接查询
2、自身连接
3、外连接
4、多表连接
2、 自身连接
自身连接:一个表与其自己进行连接
需要给表起别名以示区别
由于所有属性名都是同名属性,因此必须使用别名前缀
[例 3、52]查询每一门课得间接先修课(即先修课得先修课)
SELECT FIRSTo, SECOND、Cpno
FROM Course FIRST, Course SECOND
WHERE FIRST、Cpno = SECONDo;
自身连接(续)
FIRST表(Course表) SECOND表(Course表)
课程号
Cno
课程名
Cname
先行课
Cpno
学分
Ccredit
1
数据库
5
4
2
数学
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
数据处理
2
7
PASCAL语言
6
4
课程号
Cno
课程名
Cname
先行课
Cpno
学分
Ccredit
1
数据库
5
4
2
数学
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
数据处理
2
7
PASCAL语言
6
4
自身连接(续)
查询结果:
Cno
Pcno
1
7
3
5
5
6
连接查询(续)
1、等值与非等值连接查询
2、自身连接
3、外连接
4、多表连接
3、 外连接
外连接与普通连接得区别
普通连接操作只输出满足连接条件得元组
外连接操作以指定表为连接主体,将主体表中不满足连接条件得元组一并输出
左外连接
列出左边关系中所有得元组
右外连接
列出右边关系中所有得元组
外连接(续)
[例 3、 53] 改写[例 3、49]
SELECT Student、Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUT JOIN SC ON
(Student、Sno=SC、Sno);
外连接(续)
执行结果:
Student、Sno
Sname
Ssex
Sage
Sdept
Cno
Grade
201215121
李勇
男
20
CS
1
92
201215121
李勇
男
20
CS
2
85
201215121
李勇
男
20
CS
3
88
201215122
刘晨
女
19
CS
2
90
201215122
刘晨
女
19
CS
3
80
201215123
王敏
女
18
MA
NULL
NULL
201215125
张立
男
19
IS
NULL
NULL
连接查询(续)
1、等值与非等值连接查询
2、自身连接
3、外连接
4、多表连接
4、 多表连接
多表连接:两个以上得表进行连接
[例3、54]查询每个学生得学号、姓名、选修得课程名及成绩
SELECT Student、Sno, Sname, Cname, Grade
FROM Student, SC, Course /*多表连接*/
WHERE Student、Sno = SC、Sno
AND SCo = Courseo;
3、4 数据查询
3、4、1 单表查询
3、4、2 连接查询
3、4、3 嵌套查询
3、4、4 集合查询
3、4、5基于派生表得查询
3、4、5 Select语句得一般形式
嵌套查询(续)
嵌套查询概述
一个SELECT-FROM-WHERE语句称为一个查询块
将一个查询块嵌套在另一个查询块得WHERE子句或HAVING短语得条件中得查询称为嵌套查询
SELECT