Cách INSERT nhiều bản ghi một lúc trong MySQL

03/08/2023 - lượt xem
Chia sẻ
 
Rate this post

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.

Câu lệnh 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:

  • Đầu tiên, chỉ định tên của bảng mà bạn muốn chèn sau từ khóa INSERT INTO.
  • Thứ hai, chỉ định danh sách cột được phân tách bằng dấu phẩy bên trong dấu ngoặc đơn sau tên bảng.
  • Thứ ba, chỉ định danh sách dữ liệu hàng được phân tách bằng dấu phẩy trong mệnh đề 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.

Giới hạn INSERT nhiều hàng của MySQL

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.

Ví dụ về INSERT nhiều hàng của MySQL

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:

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm