连接查询
定义
将两个(以上)的表先连接起来在进行查询
等值连接
实例
查询选修了课程的学生以及所选课程的情况
SELECT S.*,SC.*
FROM S,SC
WHERE S.Sno=SC.Sno;
执行过程
1.先在表1当中取出第一个元组x1,然后从头开始扫描表2,逐一查找满足连接条件的元组x2,找到后就将x1和x2连接成一个元组,记为x,x即为结果表当中的一个元组,注意,一趟搜索之后所得到的x可能不止一个,也可能为0
2.然后取出表1的第二个元组重复上述操作,直到表1中的元组取完为止
自身连接
定义
一个表于自己本身进行连接
例子
查询有先选课的课程的课程号和他的先选课的先选课的课程号
SELECT a.Cno,b.Cpno
FROM C as a,C as b
WHERE a.Cpno=b.Cno;
外连接
定义表
以指定表为连接主体,将主体表当中的所有元组都输出
构建过程
非主体表有"虚行"的存在,该元组全部由空值组成
虚行可以于主体表当中不满足连接条件的元组进行连接,来自非主体表当中的元素仍旧为空值
连接类型
1.内连接
即普通连接(用WHERE中表达的连接),还有一种表达形式:
<表1> INNER JOIN <表2> ON <连接条件>
2.左外连接(左边的表为主体表,右边表有虚行)
<表1> LEFT OUTER JOIN <表2> ON <连接条件>
3.右外连接(右边的表为主体表,左边表有虚行)
<表1> LEFT OUTER JOIN <表2> ON <连接条件>
4.全外连接(左边表和右边表都有虚行)
<表1> LEFT OUTER JOIN <表2> ON <连接条件>
例子
查询所有学生信息以及选课情况
SELECT S.*,Cno,Grade
FROM S LEFT OUTER JOIN SC ON (S.Sno=SC.Sno)