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

在SQL中编写左/右连接时是否使用OUTER关键字?,sql,syntax,rdbms-agnostic,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真的可以移植吗?)。例如,我更喜欢使用也

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

SELECT * from TableA LEFT OUTER JOIN TableB ON (ID1=I2)
我自己写得很简单:

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

对我来说,“OUTER”关键字就像是行噪声——它不添加额外的信息,只是扰乱了SQL。在我所知道的大多数RDBMS中,它甚至是可选的。所以为什么人们还在写它?这是一种习惯吗?便携性?(你的SQL真的可以移植吗?)。例如,我更喜欢使用也可选的AS关键字,因为
SELECT。。。从表中,t
看起来比选择更可读。。。从表t中为我选择。

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


但这只是我的观点——技术上不需要,所以你可以使用它——或者离开它。

外部
确实是多余的,正如你所写的,因为所有
外部
连接要么是
要么
,反过来所有
连接都是
外部
。所以,正如你所说,在句法上,它主要是噪音。即使在ISO SQL中,它也是可选的。至于人们为什么使用它,我想有些人觉得需要坚持连接是
OUTER
,即使left或right关键字已经这么说了。就这点而言,
内部
也是多余的

我使用的是“内部联接”、“左联接”、“右联接”和“完全外部联接”没有“内在”的“加入”对我来说有点模棱两可“left”和“right”是自描述性的,而“full”是一种野兽,它应该有特殊的语法:)

不,我使用

  • 加入
  • 左连接
  • 右连接
  • 完全外接
  • 交叉连接

对我来说没有歧义。

我自己使用
OUTER
关键字。我同意这仅仅是一个品味的问题,但省略它让我觉得有点马虎,但没有省略
内部的
关键字(马虎)或用小写形式编写SQL关键字(非常马虎)那么糟糕.

Stackoverflow的几个月告诉我的一件事是,以前从未接触过SQL或关系数据库的人编写和/或维护了多少SQL


出于这个原因,我认为,在查看代码时,下一个程序员的表现越清晰越好。

我认为在2009年无论如何都没有可移植SQL这样的东西。。。在某些时候,您需要编写特定于DBMS的语句(比如检索前N行)


我个人认为连接语法是多余的,我用逗号分隔表名。

+1表示“特别是对于以后试图阅读和理解您的代码的其他人”为什么不使用
完全连接而不是
完全外部连接
?出于某种原因,我最终只使用单词outer表示完全外部连接。我无法解释,听起来好多了。我想是我个人的喜好。我完全同意。外部关键字只是噪声。少即是多。当我们不确定表中的哪一个实际包含数据时,我们是否可以使用它。我们需要来自任何一个表的数据?听起来您需要
完全[OUTER]连接
,尽管您的描述不太清楚。也许你需要一个
工会
。写一个新问题,详细描述你的数据和结构。我问了一些使用内部/外部选择器的同事,对他们来说,这更像是一个图像参考;当他们放置外部时,他们想象维恩图的外部部分。对我来说,这总是一种噪音。