SQL笔记——连接查询

连接查询
定义

将两个(以上)的表先连接起来在进行查询

等值连接
实例

查询选修了课程的学生以及所选课程的情况

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)

你可能感兴趣的:(持续更新,笔记,sql,数据库)