Trong bài viết này này, bạn sẽ học cách sử dụng một câu lệnh INSERT
duy nhất để chèn nhiều hàng vào một bảng.
INSERT
nhiều hàng của MySQLĐể chèn nhiều hàng vào một bảng, bạn sử dụng mẫu câu lệnh INSERT
sau:
INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);
Trong cú pháp này:
INSERT INTO
.VALUES
. Mỗi phần tử của danh sách đại diện cho một hàng. Số lượng giá trị trong mỗi phần tử phải giống với số lượng cột trong tệp column_list
.Về lý thuyết, bạn có thể chèn bất kỳ số lượng hàng nào bằng một câu lệnh INSERT
. Tuy nhiên, khi máy chủ MySQL nhận được câu lệnh INSERT
có kích thước lớn hơn max_allowed_packet
, nó sẽ đưa ra lỗi gói quá lớn và chấm dứt kết nối.
Câu lệnh này hiển thị giá trị hiện tại của biến max_allowed_packet
:
SHOW VARIABLES LIKE 'max_allowed_packet';
Đây là đầu ra trên máy chủ cơ sở dữ liệu MySQL của chúng tôi. Lưu ý rằng giá trị trong máy chủ của bạn có thể khác.
Số cột Value
là số byte.
Để đặt giá trị mới cho biến max_allowed_packet
, bạn sử dụng câu lệnh sau:
SET GLOBAL max_allowed_packet=size;
ở đâu size
là một số nguyên đại diện cho số kích thước gói tối đa được phép tính bằng byte.
Lưu ý rằng max_allowed_packet
không có ảnh hưởng đến câu lệnh INSERT INTO .. SELECT
. Câu lệnh INSERT INTO .. SELECT
có thể chèn bao nhiêu hàng tùy thích.
Hãy lấy một ví dụ về việc sử dụng câu lệnh INSERT
nhiều hàng.
Đầu tiên, tạo một bảng mới projects
để trình diễn:
CREATE TABLE projects( project_id INT AUTO_INCREMENT, name VARCHAR(100) NOT NULL, start_date DATE, end_date DATE, PRIMARY KEY(project_id) );
Thứ hai, sử dụng câu lệnh INSERT
nhiều hàng để chèn hai hàng vào bảng projects
:
INSERT INTO projects(name, start_date, end_date) VALUES ('AI for Marketing','2019-08-01','2019-12-31'), ('ML for Sales','2019-05-15','2019-11-20');
MySQL đã đưa ra thông báo sau:
2 row(s) affected
Điều đó có nghĩa là hai hàng đã được chèn vào bảng projects
thành công.
Lưu ý rằng khi bạn chèn nhiều hàng và sử dụng hàm LAST_INSERT_ID()
để lấy id được chèn cuối cùng của một cột AUTO_INCREMENT
, bạn sẽ chỉ nhận được id của hàng được chèn đầu tiên, không phải id của hàng được chèn cuối cùng.
Thứ ba, sử dụng câu lệnh SELECT
sau để xác minh các phần chèn:
SELECT * FROM projects;
Hình ảnh này cho thấy đầu ra:
Trong bài viết này, chúng ta đã học cách sử dụng câu lệnh INSERT
trong MySQL để chèn nhiều hàng vào một bảng.
Các bạn có thể tham khảo: https://www.mysqltutorial.org/mysql-insert-multiple-rows/
Các bài viết liên quan:
Bình luận: