数据操作---多表连接查询
1、若一个查询同时涉及两个或两个以上的表,则称之为连接查询。
2、连接查询包括内连接、外连接和交叉连接等。
3、连接查询中用于连接两个表的条件称为连接条件或连接谓词。
4、一般格式为: 表名1.列名1 比较运算符 表名2.列名2
内连接
例1:查询计算机系学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。
SELECT Sname, Cno, Grade FROM Student JOIN SC ON Student.Sno = SC.Sno WHERE Sdept = '计算机系'
例2:查询信息系修了VB课程的学生的修课成绩,要求列出学生姓名、课程名和成绩。
SELECT Sname, Cname, Grade FROM Student s JOIN SC ON s.Sno = SC. Sno JOIN Course c ON c.Cno = SC.Cno WHERE Sdept = '信息系' AND Cname = 'VB'
自连接:
- 为特殊的内连接
- 相互连接的表物理上为同一张表。
- 必须为两个表取别名,使之在逻辑上成为两个表。
例3:查询每一门课的间接先修课(即先修课的先修课)
SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST join Course SECOND on first.cpno=second.cno
注意: 1)需要给表起别名以示区别。 2)由于所有属性名都是同名属性,必须使用别名前缀。
外连接
例4:查询学生的修课情况,包括修了课程的学生和没有修课的学生。
SELECT Student.Sno, Sname, Cno, Grade FROM Student LEFT OUTER JOIN SC ON Student.Sno = SC.Sno