SQL连接操作(二)

2014-11-24 08:40:55 ? 作者: ? 浏览: 1

select A.学号, A.姓名, B.课号, B.分数

from 学生A left outer join成绩B on (A.学号= B.学号)

例2:查询教师指导研究生的情况,包括不指导研究生的教师。SQL语句是:

select *

from 教师A left outer join研究生B on (A.教工号= B.导师号)

这是两个左外连接的实例,查询结果中除了满足连接条件元组的之外,还包含左边关系不满足

连接条件的元组,而其对应的右边属性全部填充NULL。

五、右外连接

关系R与S进行连接操作,连接条件为P。若连接操作的结果中除了R与S在P上内连接结果之外,

还包括右边关系S在内连接操作中不相匹配的元组,而其对应于R的属性赋予空值,这种连接

称为右外连接(right outer join)。

实现右外连接的SQL子句:from R right outer join S on (<连接条件>)

例1:查询所开课程的选修情况,包括没有任何学生选修的课程。SQL语句是:

select *

from 成绩A right outer join 课程B on(A.课号=B.课号)

例2:查询所开课程和学生的学习状况(学号、课程名和分数),其中还包括没有任何学生选修

的课。SQL语句是:

select 学号, 课程名, 分数

from 成绩A right outer join 课程B on(A.课号=B.课号)

这是2个右外连接的实例,查询结果中除了满足连接条件元组之外,还包含右边关系不满足连接

条件的元组,而其对应的左边属性全部填充NULL。

六、全外连接

全外连接(full outer join)是左外连接和右外连接的组合应用。实现全外连接的SQL子句:

from R full outer join S on (<连接条件>)

例1:查询研究生和教师的情况,包括没有导师的研究生和没有指导研究生的教师。

SQL语句是:

select *

from研究生A full outer join 教师B on (A.导师号=B.教工号)

这是全外连接的实例,查询结果中除了满足连接条件元组之外,还包含2个关系中不满足

连接条件的元组,并且这些元组对应的属性全部填充NULL。

七、自连接

连接操作可以利用别名的方法实现一个表自身的连接。实质上,这种自身连接方法与两个表的

连接操作完全相似。假设有教学进度表,其中先修列是本门课程的先修课程。例如,先学习

"数据结构"课程,再学习"数据库"课程。例1:查询每一门课的先修课的先修课。例如,C5的

先修课的先修课是C6。用自连接实现查询,连接条件是:

from 教学进度A join 教学进度B on (A.先修=B.课号)

select A.课号,B.先修

from 教学进度A join 教学进度B

on (A.先修=B.课号)

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: