数据库学习6 — 连接查询

章节3.4.2


若一个查询同时涉及多个表时,则称之为连接查询。连接查询是关系数据库中最主要的查询,主要包括等值连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询。

在文章开始前,先给出建立好的表:

1.等值与非等值连接查询

连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词,其一般格式为: [<表名 1>.]<列名 1><比较运算符>[<表名 2>.]<列名 2>

其中比较运算符主要为=、>、<、>=、<=、!=(或者是<>)等。当连接运算符为=时,称为等值连接。使用其他运算符称为非等值连接。

例题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;

一条SQL语句可以同时完成选择和来连接查询,这时WHERE子句是由连接谓词和选择谓词组成的复合条件。

例题3:查询选修2号课程且成绩在90分以上的所有学生的学号和姓名。

SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno AND SC.Cno=2 AND SC.Grade>90;

2.自身连接

连接操作不仅可以在两个表之间进行,也可以是一个表与其自己进行连接,称为表的自身连接。需要注意操作时对表本身设置两个或以上别名来加以区分。

例题4:查询每一门课的间接先修课(即先修课的先修课)。

SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,COURSE SECOND
WHERE FIRST.Cpno=SECOND.Cno;

3.外连接

外连接不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。

例题5:使用外连接的方法完成例题1.

左外连接:
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUTER JOIN SC ON (Student.Sno=SC.Sno);

右外连接:
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student RIGHT OUTER JOIN SC ON (Student.Sno=SC.Sno);

//可使用USING来去掉结果重复值。

左外连接列出左边关系中所有元组,右外连接列出右边关系中所有元组。

4.多表连接

两个以上的表进行连接的连接操作叫做多表连接。

例题6:查询每个学生的学号、姓名、选修的课程名及成绩。

SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno;

…………………………………………………………………………….

以上就是文章全部内容,感谢阅读。

经验分享 程序员 微信小程序 职场和发展