INSERT vs INSERT INTO

kri*_*tof 83 sql t-sql sql-server

我已经在MS SQL中使用T-SQL一段时间了,不知怎的,每当我必须将数据插入表中时,我倾向于使用语法:

INSERT INTO myTable <something here>
Run Code Online (Sandbox Code Playgroud)

我知道关键字INTO在这里是可选的,我不必使用它,但不知怎的,它在我的案例中成长为习惯.

我的问题是:

  • 使用INSERT语法对比有什么影响INSERT INTO吗?
  • 哪一个完全符合标准?
  • 它们是否在SQL标准的其他实现中都有效?

Bil*_*ard 88

INSERT INTO是标准.尽管INTO在大多数实现中都是可选的,但它需要一些,因此最好包含它以确保您的代码是可移植的.

您可以在此处找到SQL标准的多个版本的链接.我在这里找到了旧版标准的HTML版本.

  • 《 SQL-99完全,真的》一书说Sybase(以及MS SQL Server)的行为是非标准的,允许INTO是可选的。其他品牌的数据库需要关键字。 (2认同)
  • 对.如果你总是使用INTO,你不需要记住哪些认为它是可选的.所有实现都允许使用它. (2认同)

Tom*_*lak 20

它们是相同的,INTO在T-SQL中是完全可选的(其他SQL方言可能不同).

与其他答案相反,我认为它会影响可读性INTO.

我认为这是一个概念性的事情:在我看来,我没有在名为"Customer"的表中插入一行,但我正在插入一个Customer.(这与我用来以单数而不是复数命名我的表的事实相关).

如果你遵循第一个概念,INSERT INTO Customer那么你很可能"感觉正确".

如果你遵循第二个概念,它很可能INSERT Customer适合你.

  • 你的答案是事实上正确的.当人们低估投票的观点时,这是一种耻辱.我认为SO的一个好处是听到那些不同的意见. (11认同)
  • 我认为你的方法的风险在于你可能会引导新的程序员将对象与表混淆. (5认同)

Ton*_*ews 10

它在mySQL中可能是可选的,但在某些其他DBMS中是必需的,例如Oracle.因此,使用INTO关键字,SQL将更具可移植性,因为它的价值.


dev*_*Xen 5

在 SQL Server 2005 中,您可以在 INSERT 和 INTO 之间添加一些内容,如下所示:

INSERT top(5) INTO tTable1 SELECT * FROM tTable2;

虽然它可以在没有 INTO 的情况下工作,但我更喜欢使用 INTO 来提高可读性。