oracle11g中的join,sql - 使用Oracle 11g中的+符号进行左外连接

(+)相当于(+)。

在Oracle中,(+)表示JOIN中的“可选”表。 所以在你的第一个查询中,它是一个(+).在你的第二个查询中,它是(+)。它们在功能上是等价的。

在术语中,RIGHT或LEFT指定连接的哪一侧始终具有记录,而另一侧可能为空。 所以在(+)中,(+)将始终有记录,因为它位于(+),但S可能为空。

有关其他说明,请参阅java2s.com中的此示例。

为了澄清,我想我说这个术语并不重要,因为它只是帮助可视化。 重要的是你了解它的工作原理。

右与左

我已经看到在隐式连接语法中确定RIGHT vs LEFT的重要性时会有些困惑。

LEFT OUTER JOIN

SELECT *

FROM A, B

WHERE A.column = B.column(+)

正确加入

SELECT *

FROM A, B

WHERE B.column(+) = A.column

我所做的只是在WHERE子句中交换术语的两侧,但它们在功能上仍然是等价的。 (有关详细信息,请参阅我的答案中的更高位置。)(+)的位置确定RIGHT或LEFT。 (具体来说,如果(+)位于右侧,则为LEFT JOIN。如果(+)位于左侧,则为右侧加入。)

JOIN的类型

JOIN的两种样式是隐式JOIN和显式JOIN。 它们是编写JOIN的不同风格,但它们在功能上是等价的。

看到这个问题。

隐式JOIN只是将所有表一起列出。 连接条件在WHERE子句中指定。

隐含的JOIN

SELECT *

FROM A, B

WHERE A.column = B.column(+)

显式JOIN将连接条件与特定表的包含关联,而不是在WHERE子句中。

明确的加入

SELECT *

FROM A

LEFT OUTER JOIN B ON A.column = B.column

这些隐式JOIN可能更难以阅读和理解,并且它们也有一些限制,因为连接条件在其他WHERE条件中混合。 因此,通常建议使用隐式JOIN来支持显式语法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值