Cú pháp INSERT INTO ... VALUES (..), (..), (..) cho phép chèn nhiều hàng trong một truy vấn duy nhất.
Ví dụ minh họa
Tạo bảng (engine MyISAM, AUTO_INCREMENT từ 1000):
mysql> CREATE TABLE IF NOT EXISTS DemoTable1343 (
_ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName VARCHAR(40), ClientProjectDeadline DATE
) ENGINE=MyISAM AUTO_INCREMENT=1000;
Chèn 4 hàng một lệnh:
mysql> INSERT INTO DemoTable1343(ClientName, ClientProjectDeadline)
VALUES('Chris', '2019-09-24'), ('Bob', '2015-12-09'), ('Mike', '2017-01-20'), ('Carol', '2018-03-31');
Kết quả:
mysql> SELECT * FROM DemoTable1343;
+-----------+------------+-----------------------+ | _ClientId | ClientName | ClientProjectDeadline | +-----------+------------+-----------------------+ | 1000 | Chris | 2019-09-24 | | 1001 | Bob | 2015-12-09 | | 1002 | Mike | 2017-01-20 | | 1003 | Carol | 2018-03-31 | +-----------+------------+-----------------------+
Ưu điểm:
- Hiệu năng tốt hơn nhiều so với INSERT riêng lẻ (một lần parse, một lần commit).
- Atomic: thành công tất cả hoặc thất bại tất cả (nếu không có trigger/error giữa chừng).
- Giới hạn:
max_allowed_packet(mặc định 4MB/64MB) - chia batch nếu dữ liệu lớn.