sql – Oracle“()”运算符

我检查一些旧的SQL语句,目的是记录它们,并可能增强它们。

DBMS是Oracle

我不明白这样的一句话:

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

我困惑的()运算符,并不能得到它在任何论坛…(在引号内搜索没有工作)。

无论如何,我使用SQLDeveloper的“解释计划”,我得到一个输出说,HASH JOIN,RIGHT OUTER等。

如果我在查询结束时删除()运算符,会有什么不同吗?数据库是否必须满足一些条件(比如有一些索引等)before()可以使用?这将是非常有益的,如果你能提供我一个简单的了解,或一些好的链接,我可以读到这个。

谢谢!

这是一个OUTER JOIN的Oracle特定符号,因为ANSI-89格式(使用FROM子句中的逗号分隔表引用)没有标准化OUTER连接。

该查询将重写为ANSI-92语法如下:

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

This link is pretty good at explaining the difference between JOINs

还应该注意,即使()工作,Oracle recommends not using it

Oracle recommends that you use the FROM clause OUTER JOIN syntax rather than the Oracle join operator. Outer join queries that use the Oracle join operator (+) are subject to the following rules and restrictions, which do not apply to the FROM clause OUTER JOIN syntax:

http://stackoverflow.com/questions/4020786/oracle-operator

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql – Oracle“()”运算符