首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle的加号(+)表示法和ansi连接表示法之间的区别?

Oracle的加号(+)表示法和ansi连接表示法之间的区别?
EN

Stack Overflow用户
提问于 2009-07-28 12:03:45
回答 3查看 99.7K关注 0票数 73

与ansi标准join符号相比,使用oracle的加号符号(+)有什么不同?

在性能上有区别吗?

加号表示法是否已弃用?

EN

回答 3

Stack Overflow用户

发布于 2014-10-21 18:19:49

最全面的答案显然是nagul的答案。

对于那些正在寻找ANSI语法的快速转换/映射的人:

代码语言:javascript
复制
--
-- INNER JOIN
--
SELECT *
FROM EMP e
INNER JOIN DEPT d ON d.DEPTNO = e.DEPTNO;

 -- Synonym in deprecated oracle (+) syntax
SELECT *
FROM EMP e,
     DEPT d
WHERE d.DEPTNO = e.DEPTNO;

--
-- LEFT OUTER JOIN
--
SELECT *
FROM EMP e
LEFT JOIN DEPT d ON d.DEPTNO = e.DEPTNO;

 -- Synonym in deprecated oracle (+) syntax
SELECT *
FROM EMP e,
     DEPT d
WHERE d.DEPTNO (+) = e.DEPTNO;

--
-- RIGHT OUTER JOIN
--
SELECT *
FROM EMP e
RIGHT JOIN DEPT d ON d.DEPTNO = e.DEPTNO;

-- Synonym in deprecated oracle (+) syntax
SELECT *
FROM EMP e,
     DEPT d
WHERE d.DEPTNO = e.DEPTNO(+);

--
-- CROSS JOIN
--
SELECT *
FROM EMP e
CROSS JOIN DEPT d;

 -- Synonym in deprecated oracle (+) syntax
SELECT *
FROM EMP e,
     DEPT d;

--
-- FULL JOIN
--
SELECT *
FROM EMP e
FULL JOIN DEPT d ON d.DEPTNO = e.DEPTNO;

-- Synonym in deprecated oracle (+) syntax !NOT WORKING!
SELECT *
FROM EMP e,
     DEPT d
WHERE d.DEPTNO (+) = e.DEPTNO(+);
票数 14
EN

Stack Overflow用户

发布于 2009-07-28 12:08:53

Oracle10(我相信是11)仍然支持这种表示法。它的使用被认为是“老式的”,而且也不像ANSI JOIN语法那样具有数据库可移植性。它也被认为可读性差得多,尽管如果你来自+背景,习惯ANSI连接可能需要一点时间。在向Oracle扔砖头之前要知道的重要一点是,他们在ANSI委员会完成连接的定义之前就开发了+语法。

没有性能差异;它们表达的是相同的东西。

编辑:“不能移植”我应该说“只在Oracle SQL中支持”

票数 12
EN

Stack Overflow用户

发布于 2014-05-23 12:55:39

我使用(+)表示法,因为几乎所有与Oracle Apps r12相关的查询都基于此。在Oracle应用程序查询中(甚至是Oracle自己提供的查询),我还没有看到一个带有标准"join“表达式的SQL查询。如果你不相信我,就用谷歌搜索任何与甲骨文应用相关的信息。例如:Fixed assets related queries

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1193654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档