Oracle:左连接、右连接、全外连接、(+)号详解

Oracle 外连接 (OUTER JOIN) 分为三种:

        左外连接,右外连接,全外连接。

left join、right join 和 join 的区别如下:

  • 左外连接(左边的表不加限制)
  • 右外连接(右边的表不加限制)
  • 全外连接(左右两表都不加限制)
  • 连接(左右两表交集)

对应SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常省略OUTER关键字, 写成:LEFT/RIGHT/FULL JOIN。

在左连接和右连接时都会以一张表为基础表,另一张表为补充表,基础表的内容会全部显示,然后再加上两张表匹配的内容。 如果基础表的数据在补充表中没有记录, 那么在相关联的结果集行中补充表列显示为空值(NULL)。

对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项:

  • (+)操作符只能出现在 WHERE 子句中,并且不能与 OUTER JOIN 语法同时使用。
  • 当使用(+)操作符执行外连接时,如果在WHERE子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。
  • (+)操作符只适用于列,而不能用在表达式上。
  • (+)操作符不能与 OR 和 IN 操作符一起使用。
  • (+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。

Oracle中 (+)与left join 的用法区别

在Oracle SQL中,(+) 运算符是一个特殊的连接运算符,它用于外连接(Outer Join)中的旧式语法。它通常用于实现左外连接(LEFT OUTER JOIN)或右外连接(RIGHT OUTER JOIN),但在现代的SQL标准中,推荐使用 LEFT JOINRIGHT JOIN 或 FULL JOIN 语法。

左外连接(LEFT OUTER JOIN)

SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.common_column = table2.common_column(+);

在这个例子中,table1 是左表,table2 是右表。table1 的所有行都会被返回,即使它们在 table2 中没有匹配的行。对于 table2 中没有匹配的行,相关列将返回 NULL。

右外连接(RIGHT OUTER JOIN)

SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.common_column(+) = table2.common_column;

在这个例子中,table2 是左表,table1 是右表。table2 的所有行都会被返回,即使它们在 table1 中没有匹配的行。对于 table1 中没有匹配的行,相关列将返回 NULL。

请注意,虽然 (+) 运算符在Oracle中是有效的,但它不是SQL标准的一部分,并且可能在其他数据库系统中不被支持。因此,推荐使用以下现代的SQL语法来实现外连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值