外部连接。扩展连接可以是左向外连接,右向外连接,或完全外部连接。
如果在from子句中指定了外部连接,则可以由以下组关键字指定:

左连接或左外连接。
左向外连接的结果集包括左外子句中指定的左表的所有行,而不仅仅是

它是由联接列匹配的行。如果左表的一行与右表中的行不匹配,则它位于关联的结果集行中。

右表中的所有选择列表列都是空值。

右连接或右外部连接。
右向外连接是左向外连接的反向连接。右表上的所有行都将返回。

如果没有匹配行,左边表将返回空值。

完全联接或完全外接。
完整的外部连接返回左表和右表中的所有行。当一行与另一表中的行不匹配时,则另一行。

表的选择列表列包含一个空值。如果表之间有匹配,则整个结果集行包含基表的数据。

价值。

当属于两个表的至少一个行符合连接条件时,内联返回到行。内部连接消除和其他。

表中任何不匹配的行。外部连接返回至少一个表中的from子句或

视图的所有行,只要这些行符合任何位置或具有搜索条件。

左表向外引用的所有行,以及右表所引用的右表的所有行。

部分连接中的两个表的所有行都将返回。

微软(R)SQL Server 2000在from子句中指定。

连接使用下列SQL-92关键词:

左外连接或左连接


右外连接或右连接


完全外接或完全连接
SQL Server支持SQL-92外连接语法和WHERE子句中使用的

* =和= *外部联接运算符指定旧语法。因为SQL-92语法不易产生歧义

旧的Transact-SQL外连接有时会产生歧义,所以建议使用SQL-92语言

方法。

使用左向外连接
假设作者表和发布表在城市列中连接。结果只显示在

出版商所在城市的作者(在本案中,Abraham Bennet和Cheryl Carson)

)。

如果希望将所有作者包含在结果中,并且发布者是否生活在同一个城市中,则使用SQL—

92离开外部,下面是Transact-SQL左对外连接的查询和结果:

使用酒吧
选择a.au_fname,a.au_lname,p.pub_name
从作者的左外连接出版商P
在a.city = p.city
为了p.pub_name a.au_lname ASC,ASC,ASC a.au_fname

下面是结果集:

au_fname au_lname pub_name
-------------------------------------------------------------------


雷金纳德blotchet大厅空
米歇尔德夫朗斯空
英尼斯del卡斯蒂略空
安暗空
马乔里青空
晨星格林尼空
伯特gringlesby空
雪莉亨特空
Livia卡逊空
沙琳洛克斯利空
贝尔斯登macfeather空
希瑟mcbadden空
米迦勒O'Leary空
希尔维亚panteley空
艾伯特套环空
安妮套环空
河曲史密斯空
院长直空
德克纵梁空
Johnson White空
作者yokomoto空
亚伯拉罕algodata公司
谢丽尔卡森algodata公司

(23行(s)受影响)

它是否与发布表中的城市列匹配,即左外部连接

作者表中的所有行都包含在结果中。注意:结果中列出的大多数作者没有一个阶段。

匹配的数据,因此,这些行pub_name列包含空值。

使用右向外连接
假设作者表和发布表在城市列中连接。结果只显示在

出版商所在城市的作者(在本案中,Abraham Bennet和Cheryl Carson)

)。SQL-92右向外联接运算符右外部联接的结果表明:在第一个表无论

是否有匹配的数据,结果将包含第二个表中的所有行。

如果要将所有发布者包含在结果中,并且在该城市是否有一个发布者,请使用它。

SQL-92右向外联接。以下是Transact-SQL右侧向外加入查询和结果:

使用酒吧
选择a.au_fname,a.au_lname,p.pub_name
从作者作为右外部连接出版商P
在a.city = p.city
为了p.pub_name a.au_lname ASC,ASC,ASC a.au_fname

下面是结果集:

au_fname au_lname pub_name
----------------------------------------------------------------
亚伯拉罕algodata公司
谢丽尔卡森algodata公司
零零比内特重要
空零五湖泊出版
零段勇
空空苜蓿出版社
空零新月书
空null雷蒙娜出版社
零scootney书

(9行(s)受影响)

使用谓词(例如将连接与常量进行比较)可以进一步限制外部连接。

是的,但是书名少于50本的书被取消了。

使用酒吧
选择s.stor_id,s.qty,t.title
从销售的右边外部连接标题t
在s.title_id = t.title_id
和s.qty > 50
通过s.stor_id ASC秩序

下面是结果集:

stor_id数量标题
-------------------------------------------------------------------

—
(NULL)(null)但它是否友好
(空)(空)计算机恐惧症和恐惧症的非个人的:

行为
变化
(空)(空)用电脑:鬼鬼祟祟的平衡

希茨
(空)(空)情感安全:一种新算法
(空)(空)五十年在白金汉宫厨房
706675是愤怒的敌人
(空)(空)无恐惧的生命
(空)(空)网络礼仪
(空)洋葱、韭菜和大蒜:烹饪秘诀

的
地中海
(空)(空)延长数据剥夺:四个案例研究


(空)(空)硅谷的秘密
(空)(空)硅谷美食款待
(null)(空)直接谈论计算机
(null)(空)寿司,任何人
(null)(null)繁忙的执行者的数据库指南
(null)(null)美食微波
(零)(零)计算机烹饪心理学
(null)(null)可以抵抗计算机压力!

(18行(s)受影响)

有关谓词的更多信息,请参见。

使用完整的外部连接
如果希望通过在联接结果中包含不匹配行来保留不匹配信息,则使用完整的外部连接。

微软(R)SQL Server 2000提供了完整的外部连接运算符

外部连接,不管另一个表是否有匹配的值,包括两个表中的所有行。



假设作者表和发布表在城市列中连接。结果只显示在

出版商所在城市的作者(在本案中,Abraham Bennet和Cheryl Carson)

)。SQL-92完全外部联接运算符表示,无论是否有匹配的数据表中,节点

水果将包括两张桌子上所有的行。

所有的作者和发布者都应该包含在结果中,不管这个城市是否有出版商或出版商。

在同一个城市,请使用完整的外部连接。

结果:

使用酒吧
选择a.au_fname,a.au_lname,p.pub_name
从作者一个完整的外部连接出版商P
在a.city = p.city
为了p.pub_name a.au_lname ASC,ASC,ASC a.au_fname

下面是结果集:

au_fname au_lname pub_name
出版社


雷金纳德blotchet大厅空
米歇尔德夫朗斯空
英尼斯del卡斯蒂略空
安暗空
马乔里青空
晨星格林尼空
伯特gringlesby空
雪莉亨特空
Livia卡逊空
沙琳洛克斯利空
贝尔斯登macfeather空
希瑟mcbadden空
米迦勒O'Leary空
希尔维亚panteley空
艾伯特套环空
安妮套环空
河曲史密斯空
院长直空
德克纵梁空
Johnson White空
作者yokomoto空
亚伯拉罕algodata公司
谢丽尔卡森algodata公司
零零比内特重要
空零五湖泊出版
零段勇
空空苜蓿出版社
空零新月书
空null雷蒙娜出版社
零scootney书

(30行(s)受影响)