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 Portal
GO

INSERT INTO [dbo].[Product]
    ([ProductName], [UnitPrice], [CreateDate])
SELECT
    [ProductName], [UnitPrice], [CreateDate]
FROM 
    [Northwind].[dbo].[Product]

GO

  示例:聲明table類型的變量,向變量中一次插入多條記錄

USE Portal
GO

DECLARE @tbl TABLE
(
    ProductName VARCHAR(50) NULL,
    CreateDate DATETIME NULL
)
INSERT INTO @tbl
SELECT
    [ProductName], [CreateDate]
FROM 
    [dbo].[Product]

SELECT * FROM @tbl

GO

5 參考資料:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM