在SQL中编写左/右JOIN时是否使用OUTER关键字?

时间:2009-11-16 11:28:59

标签: sql syntax rdbms-agnostic

我经常看到像这样编写SQL的人:

SELECT * from TableA LEFT OUTER JOIN TableB ON (ID1=I2)

我自己写的很简单:

SELECT * from TableA LEFT JOIN TableB ON (ID1=I2)

对我而言,“OUTER”关键字就像线路噪音一样 - 它不会增加额外的信息,只会使SQL混乱。在我所知道的大多数RDBMS中它甚至是可选的。那么......人们为什么还要写呢?这是习惯吗?可移植性? (你的SQL是否真的可移植?)还有其他我不知道的东西?

8 个答案:

答案 0 :(得分:11)

在你写的时候,

OUTER确实是多余的,因为所有OUTER个联接都是LEFTRIGHT,而且所有LEFT或{{1联接是RIGHT。从理论上讲,它主要是噪音,就像你说的那样。即使在ISO SQL中它也是可选的。至于人们使用它的原因,我想有些人认为需要坚持加入OUTER,即使左右关键字已经这样说了。就此而言,OUTER也是多余的!

答案 1 :(得分:5)

在我看来,这只是让事情变得更清晰 - 你更清楚,更明显地表明你的意图,更好(特别是对于其他人试图在以后阅读和理解你的代码)。

但这只是我的观点 - 技术上并不需要它,所以你可以使用它 - 或者保留它。

答案 2 :(得分:2)

没有。我用

  • 加入
  • LEFT JOIN
  • RIGHT JOIN
  • FULL OUTER JOIN
  • CROSS JOIN

对我来说没有歧义。

答案 3 :(得分:2)

Stackoverflow上几个月向我展示的一件事是,人们编写和/或维护了多少SQL,而之前没有接触过SQL或关系数据库。

出于这个原因,我认为在查看代码时,下一个程序员会更明确地表现出来。

答案 4 :(得分:1)

这只是一个品味问题,我猜人们会使用它,因为他们发现它会导致代码更易读。例如,我更喜欢使用也可选的AS关键字,因为SELECT ... FROM table AS t看起来比SELECT ... FROM table t更具可读性。

答案 5 :(得分:1)

我正在使用'内连接','左连接','右连接'和'全外连接'。没有'内在'的'加入'使我对我有些暧昧; 'left'和'right'是自我描述的,'full'是一种野兽,它应该得到特殊的语法:)

答案 6 :(得分:0)

我自己使用OUTER关键字。我同意这只是一个品味的问题,但是省略它让我觉得有点草率但是没有那么糟糕的省略INNER关键字(草率)或写小写的SQL关键字(非常草率)。

答案 7 :(得分:0)

我认为在2009年没有 portable SQL 这样的东西......在某些时候,你需要编写DBMS特定的语句(比如检索前N行)。

我个人觉得JOIN语法是多余的,而是用逗号分隔表名。