INSERT 是資料庫寫入操作的基石。本文從規範寫法延伸至多筆插入、資料表複製、跨表資料遷移,以及突破 IDENTITY 限制的強制寫入技巧,提供完整的資料插入解決方案。
N 前綴:N'中文',確保 Unicode 正確儲存。[欄位名],避免保留字衝突。INSERT INTO TableName ([Column1], [Column2])
VALUES (N'中文', '11ds');
SQL Server 2008+ 支援 VALUES 多列語法,或傳統 UNION ALL 方式:
INSERT INTO 表名 ([列1], [列2])
VALUES
('值1', '值2'),
('值3', '值4'),
('值5', '值6');
INSERT INTO 表名 ([列1], [列2])
SELECT '值1', '值2' UNION ALL
SELECT '值3', '值4' UNION ALL
SELECT '值5', '值6';
關鍵差異: UNION 會過濾重複列 (排序去重),UNION ALL 直接合併保留所有列,效能較佳。
SELECT * INTO NewTable FROM OldTable;
-- 方法一:永不成立的條件
SELECT * INTO NewTable FROM OldTable WHERE 1 <> 1;
-- 方法二:TOP 0 (更直觀)
SELECT TOP 0 * INTO NewTable FROM OldTable;
INSERT INTO TargetTable (Column1, Column2)
SELECT Column1, Column2 FROM SourceTable;
當需要手動指定 IDENTITY 欄位值時 (如資料遷移保留原鍵值):
-- 1. 開啟允許手動插入
SET IDENTITY_INSERT 表名 ON;
-- 2. 手動指定 ID 值插入
INSERT INTO 表名 (id, name) VALUES (1002, '大二');
-- 3. 關閉手動插入模式
SET IDENTITY_INSERT 表名 OFF;
注意事項:
IDENTITY_INSERT。db_ddladmin 權限。BULK INSERT 或 bcp 工具處理百萬級以上資料更高效。IDENTITY_INSERT 確保主鍵一致性,避免外鍵關聯斷裂。熟練掌握各類插入技巧,能靈活應對從日常開發到大規模資料遷移的各種場景需求。