SQL Server 2008——SQL命令INSERT

image

T-SQL的INSERT命令的语法:

INSERT [INTO]

    {table_name|view_name}

    [{(column_name,column_name,…)}]

    {VALUES (expression,expression,…)}

方括号内是可选的。

列名的列表必须用圆括号包围住,逗号分隔。

关键字VALUES是必须的,数据值用圆括号包围,逗号分隔。

最好是尽量避免在名称中包含空格;

如果表或视图的名称与保留字相同或包含空格,则必须用方括号或双引号将名称包围起来。

不过,如果确实需要,那么最好使用方括号,因为有时要把列数据值设置为类似Acme's Rockets的值,此时用双引号包围Acme's Rockets便于添加数据,如下所示:

VALUES

         (...

          "Acme's Rockets",

          ...)

当用双引号来替代方括号包围表或视图名称时,是在使用引用标识符,也就是在创建数据库时,使用了如下设置:

SET QUOTED_IDENTIFIER ON

如果数据库设置了“SET QUOTED_IDENTIFIER ON”,那么就不能使用双引号包围类似Acme's Rockets这样的数据值了。

为了确保查询编辑器设置为允许以双引号分隔字符串,可以在任何需要用到引号的查询处,放置下面的代码:

SET QUOTED_IDENTIFIER OFF

GO

注意,使用SET QUOTED_IDENTIFIER OFF有一个隐藏的麻烦:当使用T-SQL命令时,许多时候可能要用双引号来包围保留字,而非方括号;然而,如果将QUOTED_IDENTIFIER设置为OFF,就只能用方括号包围保留字。如果将QUOTED_IDENTIFIER设置为ON,则无法在名称中输入类似与Acme's这样的字符串,而必须把代码中的单引号用两个单引号来表示:

VALUES

         (...

          'Acme''s Rockets',

          ...)

如果没有在INSERT语句中指定列,那么提供的数据值的数目必须与要在其中进行插入的表的列数相同;如果指定了列的列表,则数据值的数目必须与INSERT语句中指定列表中的列数相同。

建议永远指明列名,即便是以列在表中布局的顺序向表的所有列中插入数据。

能够从一个INSERT语句插入多行数据,要实现这一目的,可以把要添加的每一行用它自己单独的一对圆括号包围起来,而各对圆括号之间用逗号分隔开,如下:

VALUES

         (...

          "Acme's Rockets",

          ...),

         (...

          "Tom's Rockets",

          ...),

          …

原文地址:https://www.cnblogs.com/nufangrensheng/p/3875993.html