2012-11-14 75 views
18

我偶爾會在Oracle和SQL Server之間切換,並且經常會忘記如何執行SQL Server中一些最瑣碎的任務。我想用SQL手動將一行數據插入到SQL Server數據庫表中。什麼是最簡單的方法來做到這一點?SQL Server插入示例

例如,如果我有一個USERS表,ID(數字),FIRST_NAME和LAST_NAME的列,我用什麼查詢向表中插入一行?

如果我想一次插入多行,還需要什麼語法?

回答

42

要插入數據的單個行:

INSERT INTO USERS 
VALUES (1, 'Mike', 'Jones'); 

要做到具體列上插入(而不是全部),您必須指定要更新的列。

INSERT INTO USERS (FIRST_NAME, LAST_NAME) 
VALUES ('Stephen', 'Jiang'); 

在SQL Server 2008或更高版本插入多行數據:

INSERT INTO USERS VALUES 
(2, 'Michael', 'Blythe'), 
(3, 'Linda', 'Mitchell'), 
(4, 'Jillian', 'Carson'), 
(5, 'Garrett', 'Vargas'); 

在早期版本的SQL Server中插入多行數據,使用 「UNION ALL」,例如:

INSERT INTO USERS (FIRST_NAME, LAST_NAME) 
SELECT 'James', 'Bond' UNION ALL 
SELECT 'Miss', 'Moneypenny' UNION ALL 
SELECT 'Raoul', 'Silva' 

請注意,在INSERT查詢中,「INTO」關鍵字是可選的。源和更高級的查詢可以找到here

+0

感謝您的額外代碼段! – Roman

7

以下是將數據插入表格的4種方法。

  1. 當表列序列已知時進行簡單插入。

    INSERT INTO Table1 VALUES (1,2,...)

  2. 簡單插入到表中的指定列。

    INSERT INTO Table1(col2,col4) VALUES (1,2)

  3. 批量插入時...

    1. 要表2的每一列插入到表1
    2. 你知道表2的列順序
    3. 你是肯定的Table2的列順序在使用這個語句時不會改變(也許你的語句只會被使用一次)。

    INSERT INTO Table1 {Column sequence} SELECT * FROM Table2

  4. 選擇的數據的大容量插入到表2的指定列。

INSERT INTO Table1 (Column1,Column2 ....) 
    SELECT Column1,Column2... 
     FROM Table2