让我们从INSERT命令最基本的语法开始。
INSERT [INTO] table_name [column_list] VALUES default values values_list INSERT INTO Customers (CustID, CustName) VALUES ('Cust1', 'Smith Company'); |
Msg 110, Level 15, State 1, Line 1
There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
在INSERT语句中的字段数比VALUES条件子句中指定的值少。VALUES条件子句的值的数目必须和INSERT语句中所指定的字段数一样。
输入所有的值
如果在信息中给每个字段都插入值,那么没有必要指定每个字段的名称。但是,要使用这个语法,在信息中给字段赋的值必须按照表定义中字段的顺序来输入。
INSERT INTO Customers VALUES ('Cust1', 'Smith Company', '123 West 51 st', 'Tampa', 'FL'); |

多条插入记录
SQL Server 2008支持在一个语句中插入多条记录。每行数据以逗号结尾,直到最后一行INSERT命令像普通情况一样结束。
INSERT INTO Customers (CustID, CustName) VALUES ('Cust1', 'Smith Company'), ('Cust2', 'Perform Company'), ('Cust3', 'Test Inc'); |
默认字段
如果一个字段被定义了一个默认值,那么如果没有在INSERT 语句中直接给这个字段赋值的话,每一个新记录中将插入这个默认值。例如,这个表的State字段有一个默认值“WI”。

图2
执行一个INSERT语句,类似于下面所显示的,没有给State 直接赋值,那么将使用默认值WI。
INSERT INTO Customers (CustID, CustName) VALUES ('Cust1', 'Smith Company'); |
获得插入
INSERT INTO Customers (CustID, CustName) SELECT CustID, CustName FROM LastYearSales |
其它规则
你不能插入NULL值或重复值到任何主键字段。
外键的值确认两个表间的关系。当插入或修改有外键约束的字段中的值时,相应的值必须显示在所关联的表中。
自动填充的IDENTITY字段如果没有先执行一个特定的插入确认命令:SET IDENTITY_INSERT ON,那么不能用特定值插入。例如,下面的语句显示了插入到一个IDENTITY字段。Test是表名称。
SET IDENTITY_INSERT test ON INSERT INTO test (myID) VALUES (4) SET IDENTITY_INSERT test OFF |
管理套件插入
现在让我们探究怎样使用SQL Server管理套件的图形界面来插入数据。右键单击对象浏览器中的表。从上下文菜单中选择Edit Top 200 Rows。

图3
一个具有生成的数据的数据网格将显示出来,如下所示。这个数据网格和MS Excel非常类似,所有你可以以一种熟悉的方式来输入数据。在左边加星号的记录显示了这个表的插入点。当输入数据时,你必须指定符合每个字段所设约束的可接受值。

图4
查询设计器
另一个图形化方法是使用查询编辑器的设计视图来插入数据到一个表中。在一个空白查询窗口中右键单击,然后选择Query、Design Query in Editor,如下图所示。

图5
从Add Tables对话框中,选择你想插入或更新数据的表。右键单击查询设计器中的任何地方,然后从上下文菜单中选择Change Type、Insert Values。

图6
当你在查询设计器的中间面板中输入数据到Column和New Value中时,INSERT INTO 脚本就被建立了。当你输入值后,点击OK退出设计视图。点击F5或Execute按钮来插入数据。

图7
要在你的语句运行过一次之后编辑它,那么选中整个语句,右键单击选中区域中的任何位置,然后在查询编辑器中选择Design。如果没有选中整个语句,那么将打开一个新的设计窗口而不是编辑现有的代码。
总结
INSERT语句使得可以输入值到一个SQL Server表中。语句可以是手工输入或是通过查询设计器图形化地创建。值可以是直接输入或从其它一些SELECT语句获得。在SQL Server 2008中新推出的是在一个单独的语句中输入多条记录的能力。