首页 > 代码库 > Sql Server系列:Insert语句

Sql Server系列:Insert语句

1. INSERT语法

[ WITH <common_table_expression> [ ,...n ] ]INSERT {        [ TOP ( expression ) [ PERCENT ] ]         [ INTO ]         { <object> | rowset_function_limited           [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]        }    {        [ ( column_list ) ]         [ <OUTPUT Clause> ]        { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ]         | derived_table         | execute_statement        | <dml_table_source>        | DEFAULT VALUES         }    }}[;]

  在该结构中,INSERT为该语句的实际操作,INTO关键字无真正含义,目的是为增强这个语句的可读性。INTO关键字为可选,建议在语句中加入该关键字。在使用Entity Framework添加数据时,执行的INSERT语句是没有使用INTO关键字的。

2. 单条插入

INSERT INTO [dbo].[Product]    ([ProductName], [UnitPrice], [CreateDate])VALUES     (LINQ to SQL, 100, GETDATE());

3. 多条插入

  SQL Server 2012支持一次插入多行记录,实现方式为在需要添加额外的用逗号分隔的插入值。

INSERT INTO [dbo].[Product]    ([ProductName], [UnitPrice], [CreateDate])VALUES     (LINQ to SQL, 100, GETDATE()),    (LINQ to Object, 90, GETDATE());

4. INSERT INTO ... SELECT语句

  在一次INSERT多条记录时,且需要插入的数据是从其他的数据源选择获取时,可以使用INERT INTO...SELECT语句。

  不同的数据源包括:

  ◊ 数据库中的另一个表

  ◊ 同一台服务器上的另外一个数据库中的数据表

  INERT INTO...SELECT语法:

INSERT INTO <table name>[<column list>]<SELECT statement>

  示例:从另外一个数据库的数据表作为数据源一次插入多条记录

USE PortalGOINSERT INTO [dbo].[Product]    ([ProductName], [UnitPrice], [CreateDate])SELECT    [ProductName], [UnitPrice], [CreateDate]FROM     [Northwind].[dbo].[Product]GO

  示例:声明table类型的变量,向变量中一次插入多条记录

USE PortalGODECLARE @tbl TABLE(    ProductName VARCHAR(50) NULL,    CreateDate DATETIME NULL)INSERT INTO @tblSELECT    [ProductName], [CreateDate]FROM     [dbo].[Product]SELECT * FROM @tblGO

5. 参考资料:

  http://msdn.microsoft.com/zh-cn/library/ms174335.aspx

Sql Server系列:Insert语句