我已经在MS SQL中使用T-SQL一段时间了,不管怎样,每当我必须将数据插入表中时,我倾向于使用语法:
INSERT INTO myTable <something here>
我理解关键字INTO
在这里是可选的,我不必使用它,但不知怎的,它在我的案例中变成了习惯。
我的问题是:
INSERT
语法与INSERT INTO
?答案 0 :(得分:83)
INSERT INTO
是标准。尽管INTO
在大多数实现中都是可选的,但它只是少数需要,因此最好包含它以确保您的代码是可移植的。
答案 1 :(得分:20)
它们是相同的,INTO
在T-SQL中是完全可选的(其他SQL方言可能不同)。
与其他答案相反,我认为这会影响使用INTO
的可读性。
我认为这是一个概念性的事情:在我看来,我没有将行插入名为“Customer”的表中,但我正在插入 Customer 。 (这与我用来以单数形式命名我的表而不是复数形式的事实有关。)
如果您遵循第一个概念,INSERT INTO Customer
很可能会“感觉正确”。
如果您遵循第二个概念,那么很可能是INSERT Customer
。
答案 2 :(得分:10)
它可能在mySQL中是可选的,但在某些其他DBMS中是必需的,例如Oracle。因此,使用INTO关键字,SQL将更具可移植性,这是值得的。
答案 3 :(得分:4)
我倾向于关于这个问题的一个教训是你应该始终保持一致!如果使用INSERT INTO,也不要使用INSERT。如果你不这样做,一些程序员可能会再次提出同样的问题。
这是我的另一个相关示例案例:我有机会在MS SQL 2005中更新非常长的存储过程。问题是过多的数据被插入到结果表中。我必须找出数据的来源。我试图找出新记录的添加位置。在SP的开头部分,我看到了几个INSERT INTO。然后我试图找到“INSERT INTO”并更新它们,但我错过了一个只使用“INSERT”的地方。那个实际上在一些列中插入了4k +行的空数据!当然,我应该只搜索INSERT。然而,这发生在我身上。我责怪以前的程序员IDIOT :):)
答案 4 :(得分:3)
在SQL Server 2005中,您可以在INSERT和INTO之间使用以下内容:
INSERT top(5) INTO tTable1 SELECT * FROM tTable2;
虽然它没有INTO,但我更喜欢使用INTO来提高可读性。
答案 5 :(得分:1)
他们都做同样的事情。 INTO是可选的(在SQL Server T-SQL中),但有助于提高可读性。
答案 6 :(得分:0)
我更喜欢使用它。它保持与SQL语言的其他部分相同的语法描述感和可读性,如group BY
,order BY
。
答案 7 :(得分:0)
如果可用,请使用标准功能。并不是说您需要为特定数据库提供可移植性,但您可能需要为SQL知识提供可移植性。 一个特别讨厌的T-SQL示例是使用isnull,使用coalesce!
答案 8 :(得分:0)
我开始在ORACLE上对SQL进行重命名,所以当我看到没有INTO的代码时,它只会看起来很破坏&#39;而且令人困惑。
是的,这只是我的观点,而且我并不是说应该总是使用INTO。但是你不应该意识到许多其他人可能会想到同样的事情,特别是如果他们没有开始使用新的实现编写脚本。
使用SQL,我认为您实现向表中添加ROW并且不使用对象也非常重要。我认为新的开发人员将SQL表行/条目视为对象是没有用的。再一次,只是我的意见。