【转】外连接&全连接的区别

惭愧啊………………学了这么久的数据库和sql语句,竟然没弄明白外连接和全连接的区别。引用文章一篇,文章说的很清楚。

计算机就是这样,不多读书就是不行,有些东西不是自己能能想出来的。

文章引用自:http://www.daima.com.cn/Info/70/Info26849/
请教专家terrypurcell:有关外连接的问题
db2dd 读者:感谢您对出现在 db2 开发者园地上的外连接的解释。我的问题是:当表很大(有许多行)时,我如何决定是应该使用内连接还是外(左或右)连接呢?

terry purcell:编码 inner(内)连接还是 outer(外)连接与行数无关,更多地是取决于被连接的每个表中的数据是否是必需的。

例如,假设我们有两个表:parts 和 suppliers。如果我们的业务规则规定:仅当在 suppliers 表中有相应的 supplier 时,才必须将 parts 存储在 parts 表中,那么我们将如下所示的编码内连接:

select p.part_num, p.part_desc, s.supplier_num
from parts p inner join supplier s
on p.part_num = s.part_num

然而,如果不管零件是否有供应商,都可以存储有关零件的信息(因而供应商详细信息是可选的),则需要编码 left join。如果我们编码了 inner join,那么将不会返回那些没有供应商的零件。left join 查询将是:

select p.part_num, p.part_desc, s.supplier_num
from parts p left join supplier s
on p.part_num = s.part_num

如果不管零件是否有供应商,都可以存储部件,并且不管供应商是否提供任何零件,也可以存储供应商,那么这将是 full join,如下所示:

select p.part_num, p.part_desc, s.supplier_num
from parts p full join supplier s
on p.part_num = s.part_num

因此,连接类型不是由每次查询返回的行数规定的;而是由您正在连接的每个表中出现的数据是必需的还是可选的决定的。

我希望上述内容能回答您的问题。

你可能感兴趣的:(外连接)