连接查询:顾名思义是同时涉及多个表的查询
连接条件或连接谓词:用来连接两个表的条件
一般格式:
[<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>
[<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>
连接字段:连接谓词中的列名称
连接条件中的各连接字段类型必须是可比的,但名字不必是相同的
共有四种连接:
1等值与非等值连接查询
2自身连接
3外连接
4复合条件连接
一、等值与非等值连接查询
等值连接:连接运算符为=
[例1] 查询每个学生及其选修课程的情况
SELECT Student.,SC.
FROM Student,SC
WHERE Student.Sno = SC.Sno;
查询结果:
自然连接:
[例2] 对[例1]用自然连接完成。
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno = SC.Sno;
二、自身连接
自身连接:一个表与其自己进行连接
需要给表起别名以示区别
由于所有属性名都是同名属性,因此必须使用别名前缀[例35]查询每一门课的间接先修课(即先修课的先修课)
SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno = SECOND.Cno;
三、外连接
外连接与普通连接的区别
普通连接操作只输出满足连接条件的元组
外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出,也就是包括值为NULL的元组
左外连接
列出左边关系(如本例Student)中所有的元组
右外连接
列出右边关系中所有的元组
示例对表进行如下操作:
四、复合条件连接
复合条件连接:WHERE子句中含多个连接条件
[示例]查询选修2号课程且成绩在90分以上的所有学生
SELECT Student.Sno, Sname
FROM Student, SC
WHERE Student.Sno = SC.Sno AND
SC.Cno= ‘2’ AND SC.Grade > 90;