SQL外连接

左外部连接: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所示。

图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 实例运行结果
2.右外部连接——RIGHT OUTER JOIN
与内部连接相比,右外部连接除了包含两个表的匹配行外,还包括了FROM子句中JOIN关键字右边表的不匹配行。右外部连接实际上可以表示如下:

右外部连接 = 内部连接 + 右边表中失配的元组

其中,缺少的左边表中的列值用NULL表示。右外部连接的语法可简单表示如下:

 SELECT select_list
FROM 表1     RIGHT [OUTER] JOIN 表2
ON 表1.列1=表2.列2
典型的右外部连接的示例如图7.14所示。

  
图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 实例运行结果


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值