首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 行值建構器 : 單一 INSERT 陳述式一次插入多列資料

     編輯:關於SqlServer

傳統插入方法比較

建立測試資料庫 MyTestDB 與四張結構相同的表 (MyTest1~MyTest4),各插入 5 筆資料。

方法一:ANSI VALUES 子句 (逐筆)


INSERT INTO MyTest1 (id,fname,lname,salary) VALUES (1,'John','Smith',150000.00);
INSERT INTO MyTest1 (id,fname,lname,salary) VALUES (2,'Hillary','Swank',250000.00);
... (共 5 句) -- 執行結果各 1 row(s) affected

方法二:INSERT ... SELECT (逐筆)


INSERT INTO MyTest2 SELECT 1,'John','Smith',150000.00;
... (共 5 句) -- 各 1 row(s) affected

方法三:INSERT ... SELECT ... UNION ALL


INSERT INTO MyTest3
SELECT 1,'John','Smith',150000.00
UNION ALL SELECT 2,'Hillary','Swank',250000.00
UNION ALL SELECT 3,'Elisa','Smith',120000.00
UNION ALL SELECT 4,'Liz','Carleno',151000.00
UNION ALL SELECT 5,'Tony','Mcnamara',150300.00;
-- 執行結果: 5 row(s) affected

方法四:SQL Server 2008 行值建構器 (Row Value Constructor)


INSERT INTO MyTest4 (id,fname,lname,salary) VALUES
(1,'John','Smith',150000.00),
(2,'Hillary','Swank',250000.00),
(3,'Elisa','Smith',120000.00),
(4,'Liz','Carleno',151000.00),
(5,'Tony','Mcnamara',150300.00);
-- 執行結果: 5 row(s) affected

差異總結

  • 方法一、二:每筆個別陳述式,網路往返多、效能較差。
  • 方法三:單一陳述式但語法冗長,需撰寫多重 UNION ALL。
  • 方法四 (新):單一 INSERT、語法簡潔、可讀性高、效能最佳,為大量資料插入提供原生支援。

結語

行值建構器是 SQL Server 2008 實用的 T-SQL 增強,讓開發者以標準、高效方式一次插入多列資料,取代繁瑣的 UNION ALL 或多次呼叫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved