数据库学习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;
…………………………………………………………………………….
以上就是文章全部内容,感谢阅读。
下一篇:
数据库中的连接查询方式(基本)