INSERT INTO table1(col_list) SELECT col_list FROM table2 WHERE condition;
兩資料庫皆支援。
MSSQL 需在建表時指定 WITH (IGNORE_DUP_KEY = ON) 於主鍵/唯一索引上。
SET IDENTITY_INSERT table ON 才能指定自增值,否則不可指定。NULL、指定具體值、或省略欄位,完全自由,無需額外設定。NULL。NULL 為重複值,僅允許一個 NULL。基本語法一致,MySQL 支援 LIMIT 限制更新筆數:UPDATE t SET c=1 WHERE ... LIMIT 10。
DELETE FROM table WHERE ...:可帶條件,觸發 Trigger,不重置自增計數器。TRUNCATE TABLE table:不可帶條件,不觸發 Trigger,重置自增計數器從 1 開始,速度遠快於 DELETE。兩資料庫行為相同。測試 30 筆資料:TRUNCATE 耗時極短,DELETE 較慢。
SHOW TABLE STATUS LIKE 'person'; -- 查看 Auto_increment 值
MySQL 在插入語法彈性、重複鍵處理選項、自增欄位操作上明顯優於 MSSQL,初學者從 MSSQL 轉入時需適應「寬鬆」的規則,善用 INSERT IGNORE 等特性簡化邏輯。