当前位置: 首页 > 面试题库 >

Oracle``(+)''运算符

竺展
2023-03-14
问题内容

我正在检查一些旧的SQL语句,以记录它们并可能对其进行增强。

DBMS是Oracle

我不明白这样的声明:

select ...
from a,b
where a.id=b.id(+)

我对(+)运算符感到困惑,并且无法在任何论坛上找到它((在引号内搜索+也不起作用)。

无论如何,我使用了SQLDeveloper的“解释计划”,并且得到了这样的输出HASH JOIN, RIGHT OUTER,等等。

如果(+)在查询末尾删除运算符,会有什么区别吗?在使用数据库之前,是否必须满足一些条件(例如具有一些索引等)(+)?如果您可以为我提供一个简单的理解,或者可以从中阅读有关此内容的一些很好的链接,这将对您大有帮助。

谢谢!


问题答案:

这是OUTER JOIN的Oracle专用表示法,因为ANSI-89格式(在FROM子句中使用逗号分隔表引用)没有使OUTER联接标准化。

该查询将以ANSI-92语法重新编写为:

   SELECT ...
     FROM a
LEFT JOIN b ON b.id = a.id

还应该注意的是,即使可行(+),Oracle建议 不要
使用它

Oracle建议您使用FROM子句OUTER JOIN语法,而不要使用Oracle连接运算符。使用Oracle连接运算符的外部连接查询(+)受以下规则和限制的约束,这些规则和限制不适用于FROM子句OUTER JOIN语法:



 类似资料:
  • 主要内容:Oracle MINUS操作符简介,Oracle MINUS示例在本教程中,您将学习如何使用Oracle 运算符从一个结果集中减去另一个结果集。 Oracle MINUS操作符简介 Oracle 运算符比较两个查询,并返回第一个查询中但不是第二个查询输出的行。 换句话说,运算符从一个结果集中减去另一个结果集。 以下说明Oracle 运算符的语法: 与UNION和INTERSECT操作符类似,上面的查询必须符合以下规则: 列数和它们的顺序必须匹配一致。 相应列的

  • 主要内容:Oracle INTERSECT运算符介绍,Oracle INTERSECT示例在本教程中,您将学习如何使用Oracle 运算符来比较两个查询,并返回由两者相交的行。 Oracle INTERSECT运算符介绍 Oracle 运算符比较两个查询的结果,并返回两个查询输出的不同行。 以下语句显示了运算符的语法: 与UNION运算符相似,使用运算符时必须遵循以下规则: 两个查询中列的数量和顺序必须相同。 相应列的数据类型必须处于相同的数据类型组中,例如数字或字符。 Oracle

  • 主要内容:Oracle UNION运算符简介,Oracle UNION示例,Oracle UNION 与 JOIN 区别在本教程中,您将学习如何使用Oracle 运算符来组合由两个或多个查询返回的结果集。 Oracle UNION运算符简介 运算符是一个集合运算符,它将两个或多个SELECT语句的结果集组合到一个结果集中。 以下说明了组合两个查询的结果集的运算符的语法: 在此声明中,和必须具有相同顺序的相同列数。 另外,对应列的数据类型必须是相同的数据类型组,例如数字或字符。 Oracle UN

  • 主要内容:Oracle ALL操作符简介,Oracle ALL运算符示例在本教程中,您将学习如何使用Oracle 运算符将值与列表或子查询进行比较。 Oracle ALL操作符简介 Oracle 操作符用于将值与子查询返回的值列表或结果集进行比较。 以下显示了与列表或子查询一起使用的运算符的语法: 在这个语法中, ALL运算符前面必须有一个运算符,例如:,,,,,,后跟一个列表或子查询。 列表或子查询必须用圆括号包围。 使用运算符将值与列表进行比较时,Oracle将初

  • 主要内容:Oracle Exists运算符,Oracle EXISTS示例在本教程中,您将学习如何使用Oracle 运算符来测试行的存在。 Oracle Exists运算符 Oracle 运算符是返回或的布尔运算符。运算符通常与子查询一起使用来测试行的存在: 如果子查询返回任何行,则运算符返回,否则返回。 另外,当子查询返回第一行,操作符终止子查询的处理。 Oracle EXISTS示例 下面来看看一些使用运算符的例子,来理解它是如何工作的。 1. Oracle EXI

  • 主要内容:Oracle ANY运算符简介,Oracle ANY运算符的例子在本教程中,您将学习如何使用Oracle 运算符将值与列表或子查询进行比较。 Oracle ANY运算符简介 Oracle 运算符用于将值与子查询返回的值或结果集列表进行比较。下面举例说明运算符与列表或子查询一起使用时的语法: 在这个语法中: 运算符前面必须有一个运算符,例如:,,,,,。 列表或子查询必须用圆括号包围。 使用运算符将值与列表进行比较时,Oracle将初始条件扩展到列表的所有元素,