让我清楚地了解 Oracle 9i 中的外部联接
Posted
技术标签:
【中文标题】让我清楚地了解 Oracle 9i 中的外部联接【英文标题】:Get me the clear picture of outer joins in Oracle 9i 【发布时间】:2011-04-07 03:49:50 【问题描述】:在我看来,外部连接有点令人困惑。
有没有人可以让我清楚地了解外部连接(右、左和完整)?
【问题讨论】:
【参考方案1】:原始问题/答案:https://***.com/questions/3308122/how-do-i-decide-when-to-use-right-join-left-join-or-inner-join-or-how-to-deter/3308153#3308153
阅读The Code Project 上的这篇原创文章会对您有很大帮助:Visual Representation of SQL Joins。
【讨论】:
非常感谢 Pranay。图表真的很有帮助:-))【参考方案2】:Wikipedia article about Joins 应该可以帮助您。
Oracle 外连接的特别之处在于使用 (+)
的旧符号,但现在已经过时了。
【讨论】:
【参考方案3】:我一直这么认为的方式是:
LEFT JOIN - keeps all rows selected on the left
RIGHT JOIN - keeps all rows selected on the right
FULL JOIN - keeps all rows selected on both sides
易于记在脑海中,无需访问***或绘制图表。
附: Oracle 死亡 + 连接语法!
【讨论】:
【参考方案4】:我从不喜欢@Pranay Rana 的回答中使用的那些经常看到的图片。它们显示集合操作但不显示连接。比如上面中间的图片是A union B
,左边中间的图片是A except B
(或者我想Oracle是A minus B
)等等。
还要考虑到关系模型中不存在 null,因此无论如何您都无法使用维恩图来绘制它! ;)
我认为不使用表格(例如this one)就无法绘制外连接图。
【讨论】:
以上是关于让我清楚地了解 Oracle 9i 中的外部联接的主要内容,如果未能解决你的问题,请参考以下文章