问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://m.blog.csdn.net/xdmxmf0/article/details/145001635

在数据库查询中,外连接是一种重要的数据检索方式,它允许我们在查询结果中包含一个表中的所有记录,即使另一个表中没有匹配的记录。本文将详细介绍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 JOIN

RIGHT 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语法来实现外连接

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号