Đây là những gì tôi đã tìm thấy hoạt động tốt. Nó hơi dài nhưng nhiều lần dữ liệu bổ sung cần phải được xáo trộn xung quanh.
Chèn nhiều hàng vào Bảng 1 từ Bảng 2 với các giá trị. Ví dụ:
INSERT INTO table1 [col1, col2, col3, col4, col5]
SELECT col1,col2,col3,col4,col5
FROM table2 t2
WHERE t2.val2 IN [MULTIPLE VALUES]
AND [Another Conditional];
Bạn có thể chèn các giá trị được mã hóa cứng để chèn nhiều hàng với dữ liệu lặp lại:
INSERT INTO table1 [col1, col2, col3, col4, col5]
SELECT "Value", col2, col3, "1900-01-01","9999-12-31"
FROM table2 t2
WHERE t2.val2 IN [MULTIPLE VALUES]
AND [Another Conditional];
Lưu ý rằng: "Giá trị", "1900-01-01", "9999-12-31" sẽ lặp lại trên tất cả các hàng được chèn vào.
Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng một câu lệnh MySQL INSERT
để chèn nhiều hàng vào bảng.: in this tutorial, you will learn how to use a single MySQL INSERT
statement to insert multiple rows into a table.
MySQL INSERT
Câu lệnh nhiều hàng
Để chèn nhiều hàng vào bảng, bạn sử dụng hình thức sau của câu lệnh INSERT
:
Code language: SQL [Structured Query Language] [sql]
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
2.INSERT INTO table1 [col1, col2, col3, col4, col5] SELECT "Value", col2, col3, "1900-01-01","9999-12-31" FROM table2 t2 WHERE t2.val2 IN [MULTIPLE VALUES] AND [Another Conditional];
- Thứ hai, chỉ định một 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 đề
3. Mỗi yếu 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 trongINSERT INTO table1 [col1, col2, col3, col4, col5] SELECT "Value", col2, col3, "1900-01-01","9999-12-31" FROM table2 t2 WHERE t2.val2 IN [MULTIPLE VALUES] AND [Another Conditional];
4.INSERT INTO table1 [col1, col2, col3, col4, col5] SELECT "Value", col2, col3, "1900-01-01","9999-12-31" FROM table2 t2 WHERE t2.val2 IN [MULTIPLE VALUES] AND [Another Conditional];
MySQL INSERT
Giới hạn nhiều hàng
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 ____99. 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
INSERT INTO table1 [col1, col2, col3, col4, col5]
SELECT "Value", col2, col3, "1900-01-01","9999-12-31"
FROM table2 t2
WHERE t2.val2 IN [MULTIPLE VALUES]
AND [Another Conditional];
8, nó sẽ phát hành một lỗi quá lớn và chấm dứt kết nối.Câu lệnh này cho thấy giá trị hiện tại của biến
INSERT INTO table1 [col1, col2, col3, col4, col5]
SELECT "Value", col2, col3, "1900-01-01","9999-12-31"
FROM table2 t2
WHERE t2.val2 IN [MULTIPLE VALUES]
AND [Another Conditional];
8:Code language: SQL [Structured Query Language] [sql]
SHOW VARIABLES LIKE 'max_allowed_packet';
Dưới đâ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 nhau.
Số là cột
0 là số byte.Code language: SQL [Structured Query Language] [sql]
INSERT INTO table_name [column_list] VALUES [value_list_1], [value_list_2], ... [value_list_n];
Để đặt giá trị mới cho biến
INSERT INTO table1 [col1, col2, col3, col4, col5]
SELECT "Value", col2, col3, "1900-01-01","9999-12-31"
FROM table2 t2
WHERE t2.val2 IN [MULTIPLE VALUES]
AND [Another Conditional];
8, bạn sử dụng câu lệnh sau:Code language: SQL [Structured Query Language] [sql]
SET GLOBAL max_allowed_packet=size;
trong đó
2 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.Code language: SQL [Structured Query Language] [sql]
INSERT INTO table_name [column_list] VALUES [value_list_1], [value_list_2], ... [value_list_n];
Lưu ý rằng
INSERT INTO table1 [col1, col2, col3, col4, col5]
SELECT "Value", col2, col3, "1900-01-01","9999-12-31"
FROM table2 t2
WHERE t2.val2 IN [MULTIPLE VALUES]
AND [Another Conditional];
8 không có ảnh hưởng đến câu lệnh 4. Câu lệnhCode language: SQL [Structured Query Language] [sql]
INSERT INTO table_name [column_list] VALUES [value_list_1], [value_list_2], ... [value_list_n];
4 có thể chèn bao nhiêu hàng tùy thích.Code language: SQL [Structured Query Language] [sql]
INSERT INTO table_name [column_list] VALUES [value_list_1], [value_list_2], ... [value_list_n];
Hãy cùng lấy một ví dụ về việc sử dụng câu lệnh INSERT
nhiều hàng.
Đầu tiên, hãy tạo một bảng mới có tên
7 cho cuộc biểu tình:Code language: SQL [Structured Query Language] [sql]
INSERT INTO table_name [column_list] VALUES [value_list_1], [value_list_2], ... [value_list_n];
Code language: SQL [Structured Query Language] [sql]
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
7:Code language: SQL [Structured Query Language] [sql]
INSERT INTO table_name [column_list] VALUES [value_list_1], [value_list_2], ... [value_list_n];
Code language: SQL [Structured Query Language] [sql]
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 đã phát hành tin nhắn sau:
Code language: SQL [Structured Query Language] [sql]
2 row[s] affected
Điều đó có nghĩa là hai hàng đã được chèn vào bảng
7 thành công.Code language: SQL [Structured Query Language] [sql]
INSERT INTO table_name [column_list] VALUES [value_list_1], [value_list_2], ... [value_list_n];
Lưu ý rằng khi bạn chèn nhiều hàng và sử dụng hàm
1 để nhận ID cuối cùng của cộtCode language: SQL [Structured Query Language] [sql]
SHOW VARIABLES LIKE 'max_allowed_packet';
2, bạn sẽ nhận được ID của hàng được chèn đầu tiên, không phải là ID của hàng chèn cuối cùng.Code language: SQL [Structured Query Language] [sql]
SHOW VARIABLES LIKE 'max_allowed_packet';
Thứ ba, sử dụng câu lệnh
3 sau đây để xác minh các phần chèn:Code language: SQL [Structured Query Language] [sql]
SHOW VARIABLES LIKE 'max_allowed_packet';
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM projects;
Hình ảnh này cho thấy đầu ra:
Trong hướng dẫn này, bạn đã học được cách sử dụng câu lệnh MySQL INSERT
để chèn nhiều hàng vào bảng.
Hướng dẫn này có hữu ích không?