数据库系统原理作业六数据查询中的连接查询
Posted Maynine丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库系统原理作业六数据查询中的连接查询相关的知识,希望对你有一定的参考价值。
连接查询
同时涉及两个以上的表的查询成为连接查询
[<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>
例:Student.Sno = SC.sno
--连接字段类型必须是可比的,但名字不必相同
一、等值与非等值连接查询
等值连接和非等值连接的区别是,等值连接的运算符为=
,非等值连接的运算符为>、<
等
例1.查询每个学生及其选修课程的情况
select Student.*,Sc.*
from Student,SC
where Student.Sno = SC.Sno;
执行结果:
可以看到,查询结果的行数与SC表一致,SC中的Sno是Student中Sno的外键,这表明在这种情况连接时,所得关系的行数与外键一致。
二、自身连接
一个表与自己进行连接成为自身连接
【注】
- 需要给表起别名以示区别
- 所有属性名都是同名属性,因此必须使用别名
例.查询每一门课的间接先修课(即先修课的先修课)
select First Cno,Second.Cpno
from Course First,Course Second
where First.Cpon = Second.Cno;
执行结果:
如果要取消空值在where处添加and Second.Sno is not null
即可
三、外连接
外连接与普通连接的区别
1.普通连接操作只输出满足连接条件的元组
2.外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出
select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student left outer join SC
On (Student.Sno = SC.Sno);
Student左连接SC,可以看到,没有选课(在SC中没有记录)的学生也一并输出,并且值为Cno和Grade的值为NULL
四、多表连接
两个表以上的表进行连接成为多表连接
例1.查询每个学生的学号、姓名、选修的课程名及成绩
select Student.Sno,Sname,Cname,Grade
from Student,SC,Course
where Student.Sno = SC.Sno and
SC.Cno =Course.Cno;
执行结果:
五、一些问题
①外连接中,只介绍了左外连接,除左外连接外,还有左向外联接、右向外联接或完整外部联接三种
左向外联接:left outer join
右向外联接:right outer join
完整外部联接:full outer join
以上是关于数据库系统原理作业六数据查询中的连接查询的主要内容,如果未能解决你的问题,请参考以下文章