oracle sql outer join,解答Oracle LEFT JOIN和LEFT OUTER JOIN的区别

问:我一直在对不同种类的Oracle连接做研究,目前还搞不清楚LEFT JOIN和LEFT OUTER JOIN之间有什么区别。Outer这个词是可选的么?因为Oracle中的LEFT JOIN是默认为OUTER JOIN的。如果是这样的话,我就不明白“INNER”和“OUTER”的用法了,因为显而易见INNER与JOIN或FULL JOIN一起使用从而产生两个表中所有的匹配(对于inner也是同样如此,对么?)。而OUTER可以和LEFT,RIGHT以及FULL一起使用。这些关键词的使用难道只是用来强调JOIN的特性么?

答:Oracle连接,包括LEFT JONI和LEFT OUTERJOIN,的确是会让人非常困惑的话题,对Oracle新手来说尤为如此。在这里我们来深入介绍一些关于Oracle连接的常见问题。

根据TechTarget的专家问答,Oracle中有三类OUTER JOIN -- 分别是LEFT,RIGHT和FULL。一个LEFT OUTER JOIN包含“左”表中的所有记录,即使它与在此连接中指定的“右”表并不存在任何匹配。一个RIGHT OUTER JOIN包含“右”表中的所有记录,即使它与在此连接中指定的“左”表并不存在任何匹配。而一个FULL OUTER JOIN则包含左右两表中的所有记录。

就像之前专家Karen Morton所说的一样,一个OUTER JOIN通过返回满足连接条件的记录,以及从一个没有记录满足其他连接条件的表返回某些或所有记录来扩展一个简单连接的结果。

社区用户cpflames解释说,关键词OUTER是可选的,但其实它应该是强制性的。他建议在Oracle中的OUTER JOINS要始终包含OUTER来提醒这是一个外连接。

对于JOIN来说,LEFT,RIGHT和FULL这几个关键词是强制性的。而LEFT,RIGHT和FULL OUTER JOINS是OUTER JOIN仅有的类型。

据cpflames解释,INNER JOIN意味着所有的结果记录是通过匹配两个表之间的某些条件产生的。一个OUTER JOIN会有某些时候并不匹配的结果记录,而是从一个表或是另外一个表亦或是从它们两个表返回没有匹配的结果记录。除了inner和outer还有另外一个连接类型,那就是CROSS JOIN。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值