外连接
-
左外连接:满足ON条件表达式,左外连接是以左表为准,返回左表所有的数据,与右表匹配的则有值,没有匹配的则以空值NULL取代
-
右外连接:满足ON条件表达式,右外连接是以右表为准,返回右表所有的数据,与左表匹配的则有值,没有匹配的则以空值NULL取代。
-
完整外部连接:满足ON条件表达式,返回两个表符合条件的所有行,a表没有匹配的则a表的列返回NULL,b表没有匹配的则b表的列返回NULL,即返回的是左连接和右连接的并集。
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。外连接是只限制一张表中的数据必须满足连接条件,而另一张表可以不满足连接条件。
SQL Server支持ANSI方式的外连接
ANSI方式的外连接的语法格式:
命令格式:FROM 表1 LEFT|RIGHT|[OUTER] JOIN 表2 ON <连接条件>
详解:LEFT [OUTER] JOIN 称为左外连接 --限制表2的数据必须满足连接条件,不管表1如何,均输出表1的内容
RIGHT [OUTER] JOIN 称为右外连接 --限制表1的数据必须满足连接条件,不管表2如何,均输出表2的内容
-
查询学生的选课情况,包括未选课的和选课的
SELECT Student.Sno,Sname,Cno,Grade FROM Student LEFT OUTER JOIN SC ON Student.Sno=SC.Sno; --左外连接 SELECT Student.Sno,Sname,Cno,Grade FROM SC LEFT OUTER JOIN Student ON Student.Sno=SC.Sno; --右外连接
-
查询哪些课程没人选,列出其课程名
SELECT Cname FROM Course AS C LEFT OUTER JOIN SC AS S ON C.Cno = S.Cno WHERE S.Cno IS NULL; --左外连接