连接查询:顾名思义是同时涉及多个表的查询
连接条件或连接谓词:用来连接两个表的条件
一般格式:
[<表名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;