MySQL cho phép chèn nhiều hàng cho một cột trong một câu lệnh INSERT duy nhất.
Cú pháp
INSERT INTO ten_bang(ten_cot) VALUES ('gia_tri_1'), ('gia_tri_2'), ('gia_tri_3'), ...;
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE InsertMultipleDemo (
-> Id INT NOT NULL AUTO_INCREMENT,
-> UserName VARCHAR(10),
-> UserRole VARCHAR(20),
-> PRIMARY KEY(Id)
-> );
Chèn 4 giá trị cho cột UserRole một lần:
mysql> INSERT INTO InsertMultipleDemo(UserRole)
-> VALUES('Admin'), ('Author'), ('Driver'), ('Guest');
Query OK, 4 rows affected (0.17 sec)
Kết quả:
+----------+ | UserRole | +----------+ | Admin | | Author | | Driver | | Guest | +----------+
Lợi ích
- Giảm round-trip network (1 lần giao tiếp thay vì 4 lần)
- Tăng hiệu suất bulk insert đáng kể
- Atomic: hoặc toàn bộ thành công, hoặc toàn bộ thất bại
Lưu ý
- Các cột không chỉ định sẽ nhận giá trị DEFAULT hoặc NULL (nếu cho phép)
- Id tự động tăng sẽ gán liên tiếp: 1, 2, 3, 4
- Giới hạn độ dài packet:
max_allowed_packet(mặc định 4MB/64MB) - Với dữ liệu lớn, chia thành batch 1000-5000 hàng/lần