sql – Oracle连接 – 常规语法与ANSI语法的比较
发布时间:2020-05-24 08:18:25 所属栏目:MsSql 来源:互联网
导读:不久之后,我看到太多的怪人评论Oracle的问题,说“不要使用()运算符,而是使用JOIN语法”。 我确实看到这两个都很好。但是,使用它们的真正区别是什么?我会欢迎答案,更多来自经验。 1. Is there anything to do with limitations in application, performa
|
不久之后,我看到太多的怪人评论Oracle的问题,说“不要使用()运算符,而是使用JOIN语法”。 我确实看到这两个都很好。但是,使用它们的真正区别是什么?我会欢迎答案,更多来自经验。 1. Is there anything to do with limitations in application,performance,etc. while using them? 2. What would you suggest for me? 我在Oracle documentation读了一些东西,但并不足以让我理解或感受到全面的信息。 注意:我打算迁移200个包和程序,如果使用Keyword而不是() 3. Also is there any freeware tools to do the rewrite? 发布样品 +----------------------------------+------------------------------------------------+ |-INNER JOIN - CONVENTIONAL |-INNER JOIN - ANSI SYNTAX | |----------------------------------|------------------------------------------------| |SELECT |SELECT | | EMP.DEPTNO | ENAME,| |FROM | DNAME,| | EMP,| EMP.DEPTNO,| | DEPT | DEPT.DEPTNO | |WHERE | FROM | | EMP.DEPTNO = DEPT.DEPTNO; | SCOTT.EMP INNER JOIN SCOTT.DEPT | | | ON EMP.DEPTNO = DEPT.DEPTNO; | |----------------------------------|------------------------------------------------| |-LEFT OUTER JOIN - CONVENTIONAL |-LEFT OUTER JOIN - ANSI SYNTAX | |----------------------------------|------------------------------------------------| |SELECT | SELECT | | EMP.DEPTNO | ENAME,| | DEPT | DEPT.DEPTNO | |WHERE | FROM | | EMP.DEPTNO = DEPT.DEPTNO(+);| SCOTT.EMP LEFT OUTER JOIN SCOTT.DEPT | | | ON EMP.DEPTNO = DEPT.DEPTNO; | |----------------------------------|------------------------------------------------| |-RIGHT OUTER JOIN - CONVENTIONAL |-RIGHT OUTER JOIN - ANSI SYNTAX | |----------------------------------|------------------------------------------------| |SELECT | SELECT | | EMP.DEPTNO | ENAME,| | DEPT | DEPT.DEPTNO | |WHERE | FROM | | EMP.DEPTNO(+) = DEPT.DEPTNO;| SCOTT.EMP RIGHT OUTER JOIN SCOTT.DEPT | | | ON EMP.DEPTNO = DEPT.DEPTNO; | |----------------------------------|------------------------------------------------| |-FULL OUTER JOIN - CONVENTIONAL |-FULL OUTER JOIN - ANSI SYNTAX | |----------------------------------|------------------------------------------------| | | | |SELECT | SELECT | | * | * | |FROM | FROM | | EMP,| SCOTT.EMP FULL OUTER JOIN SCOTT.DEPT | | DEPT | ON EMP.DEPTNO = DEPT.DEPTNO; | |WHERE | | | EMP.DEPTNO = DEPT.DEPTNO(+) | | |UNION ALL | | |SELECT | | | * | | |FROM | | | EMP,| | | DEPT | | |WHERE | | | EMP.DEPTNO(+) = DEPT.DEPTNO | | | AND EMP.DEPTNO IS NULL; | | |__________________________________|________________________________________________| PS:阅读所有更新分组的答案摘要。 解决方法如果您的200个软件包按照“老式”语法工作,请放心。在迁移到ANSI语法之后,SQL将不会更好地运行 – 它只是不同的语法。 所有这一切,ANSI语法更清洁 – 如果在某些多列外部连接中忘记(),则不会正常加入。 在过去,有一些ANSI语法错误,但是如果你去最新的11.2或12.1应该已经修复了。 当然,您更好地了解您的环境和优先级 – 就像SchmitzIT所说 – ANSI语法是SQL标准的一部分,它将有助于使用其他RDBMS产品。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
