左外部连接:LEFT OUTER JOIN或LEFT JOIN
右外部连接:RIGHT OUTER JOIN或RIGHT JOIN全外部连接:FULL OUTER JOIN或FULL JOIN
1.左外部连接——LEFT OUTER JOIN
与内部连接相比,左外部连接除了包含两个表的匹配行外,还包括了FROM子句中JOIN关键字左边表的不匹配行。左外部连接实际上可以表示如下:
左外部连接 = 内部连接 + 左边表中失配的元组 |
其中,缺少的右边表中的列值用NULL表示。左外部连接的语法可简单表示如下:
SELECT select_list
FROM 表1 LEFT [OUTER] JOIN 表2
ON 表1.列1=表2.列2 |
![]() |
图7.11 左外部连接示例 |
下面给出一个左外部连接的实例。
实例10 使用LEFT OUTER JOIN实现左外部连接表
本实例将使用LEFT OUTER JOIN实现左外部连接表BookInfo和ReaderInfo,实现与实例8相同的查询内容。实例代码如下:
USE Library
SELECT B.bookid,B.bookname,B.reader,R.readername,R.unit
FROM BookInfo AS B
LEFT OUTER JOIN ReaderInfo AS R
ON B.reader=R.readerid --连接关系
ORDER BY B.bookid |
运行代码,结果如图7.12所示。
![]() |
图7.12 实例运行结果 |
与内部连接相比,右外部连接除了包含两个表的匹配行外,还包括了FROM子句中JOIN关键字右边表的不匹配行。右外部连接实际上可以表示如下:
右外部连接 = 内部连接 + 右边表中失配的元组
|
其中,缺少的左边表中的列值用NULL表示。右外部连接的语法可简单表示如下:
SELECT select_list
FROM 表1 RIGHT [OUTER] JOIN 表2
ON 表1.列1=表2.列2 |
![]() |
图7.14 右外部连接示例 |
下面给出一个右外部连接的实例。
实例11 使用RIGHT OUTER JOIN实现右外部连接表
本实例将使用RIGHT OUTER JOIN实现右外部连接表BookInfo和ReaderInfo,实现与实例8相同的查询内容。实例代码如下:
USE Library
SELECT B.bookid,B.bookname,B.reader,R.readername,R.unit
FROM BookInfo AS B
RIGHT OUTER JOIN ReaderInfo AS R
ON B.reader=R.readerid --连接关系
ORDER BY B.bookid |
运行代码,结果如图7.15所示。
![]() |
图7.15 实例运行结果 |
3.全外部连接——FULL OUTER JOIN
与内部连接相比,全外部连接除了包含两个表的匹配行外,还包括了FROM子句中JOIN关键字左边表和右边表的不匹配行。全外部连接实际上可以表示如下:
全外部连接= 内部连接 + 左边表中失配的元组 + 右边表中失配的元组
其中,缺少的左边表和右边表中的列值用NULL表示。
全外部连接的语法可简单表示如下:
SELECT select_list
FROM 表1 FULL [OUTER] JOIN 表2
ON 表1.列1=表2.列2
|
典型的全外部连接的示例如图7.16所示。
![]() |
图7.16 全外部连接示例 |
下面给出一个全外部连接的实例。
实例12 使用FULL OUTER JOIN实现全外部连接表
本实例将使用FULL OUTER JOIN实现全外部连接表BookInfo和ReaderInfo,实现与实例8相同的查询内容。实例代码如下:
USE Library
SELECT B.bookid,B.bookname,B.reader,R.readername,R.unit
FROM BookInfo AS B
FULL OUTER JOIN ReaderInfo AS R
ON B.reader=R.readerid --连接关系
ORDER BY B.bookid |
运行代码,得到如图7.17所示的结果。
![]() |
图7.17 实例运行结果 |