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

MySQL 批次插入資料:單一 INSERT 語法一次寫入多筆記錄

     編輯:MySQL 綜合教學

MySQL 批次插入資料:單一 INSERT 語法一次寫入多筆記錄

在 MySQL 中若需插入多筆資料,最直覺的方式是重複呼叫 INSERT 語句,但這會導致伺服器重複進行 SQL 分析、最佳化等動作,增加負載。MySQL 提供專有語法,允許在單一 INSERT 語句中一次插入多筆記錄,大幅提升效能。

基本語法

INSERT INTO table_name (column1, column2, ...)
VALUES
  (value1_1, value1_2, ...),
  (value2_1, value2_2, ...),
  (value3_1, value3_2, ...);

每組值必須用括號 (...) 包裹,組與組之間以逗號分隔。

實際範例

INSERT INTO users (name, age)
VALUES
  ('姚明', 25),
  ('比爾·蓋茨', 50),
  ('火星人', 600);

上述語句一次向 users 表插入三筆記錄。

常見錯誤與正確寫法

假設有一個單欄位表 table1(n INT),欲插入 5 筆資料:

錯誤寫法

INSERT INTO table1 (n) VALUES (1, 2, 3, 4, 5);

MySQL 會拋出錯誤:ERROR 1136: Column count doesn't match value count at row 1,因為單一括號內提供了 5 個值,但欄位只有一個。

正確寫法

INSERT INTO table1 (n) VALUES (1), (2), (3), (4), (5);

若省略欄位名稱,則每組括號內的值數量必須與資料表欄位數完全一致:

INSERT INTO table1 VALUES (1), (2), (3), (4), (5);

效能優勢

  • 減少客戶端與伺服器的網路往返次數。
  • 伺服器僅需解析、最佳化一次 SQL 語句。
  • 適用於大量資料初始化、ETL 匯入等情境。

注意事項

  • 此語法為 MySQL 專有,不屬於標準 SQL,移植至其他資料庫時需調整。
  • 單一語句過大可能觸發 max_allowed_packet 限制,需依實際資料量調整該參數或分批執行。
  • 搭配交易控制可確保資料一致性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved