Chèn vào nhiều hàng MySQL

Nhiều lần các nhà phát triển hỏi rằng có thể chèn nhiều hàng vào một bảng trong một câu lệnh không. Hiện tại, các nhà phát triển phải viết nhiều câu lệnh chèn khi họ chèn các giá trị vào một bảng. Nó không chỉ nhàm chán mà còn tốn thời gian

Show

Hãy cùng xem một số ví dụ thực tế để hiểu rõ hơn về khái niệm này. Chúng tôi sẽ sử dụng cơ sở dữ liệu MySQL để viết tất cả các truy vấn

ví dụ 1

Để tạo một bảng trong cơ sở dữ liệu, trước tiên, chúng ta cần chọn cơ sở dữ liệu mà chúng ta muốn tạo bảng.

Sau đó, chúng tôi sẽ viết một truy vấn để tạo một bảng có tên sinh viên trong cơ sở dữ liệu đã chọn 'dbs'


Chèn vào nhiều hàng MySQL

Tạo bảng sinh viên thành công

Bây giờ, chúng ta sẽ viết một truy vấn duy nhất để chèn nhiều bản ghi vào bảng sinh viên


Chèn vào nhiều hàng MySQL

Để xác minh rằng nhiều bản ghi được chèn vào bảng items_tbl, chúng tôi sẽ thực hiện truy vấn CHỌN

Chúng ta có thể sử dụng câu lệnh SQL

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
7 để chèn một hàng vào bảng. Chúng ta cũng có thể sử dụng nó để chèn nhiều hàng

Dưới đây là bảy cách để chèn nhiều hàng vào một bảng trong SQL. Hầu hết các ví dụ này sẽ hoạt động trong các RDBMS chính, có thể ngoại trừ Oracle. Nhưng đừng lo, tôi đã bao gồm một ví dụ dành riêng cho Oracle

Sử dụng nhiều câu lệnh INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB) VALUES (1, 2, 3, 'Fluffy', '2020-11-20'), (2, 3, 3, 'Fetch', '2019-08-16'), (3, 2, 2, 'Scratch', '2018-10-01');7

Một cách để chèn nhiều hàng là sử dụng câu lệnh

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
7 riêng cho mỗi hàng

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES ( 1, 2, 3, 'Fluffy', '2020-11-20' );

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES ( 2, 3, 3, 'Fetch', '2019-08-16' );

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES ( 3, 2, 2, 'Scratch', '2018-10-01' );

Ở đây, chúng tôi đã chèn ba hàng vào một bảng có tên là

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
0. Mỗi hàng có câu lệnh
INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
7 riêng

Cung cấp Tất cả Dữ liệu trong Điều khoản INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB) VALUES (1, 2, 3, 'Fluffy', '2020-11-20'), (2, 3, 3, 'Fetch', '2019-08-16'), (3, 2, 2, 'Scratch', '2018-10-01');2

Trong hầu hết các RDBMS chính (ngoại trừ Oracle), chúng ta có thể truyền dữ liệu cho nhiều hàng trong một mệnh đề

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
2

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');

Ở đây, chúng tôi đã sử dụng một câu lệnh

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
7 duy nhất, với dữ liệu của mỗi hàng được phân tách bằng dấu phẩy

Nối các hàng với các câu lệnh INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB) VALUES (1, 2, 3, 'Fluffy', '2020-11-20'), (2, 3, 3, 'Fetch', '2019-08-16'), (3, 2, 2, 'Scratch', '2018-10-01');5 và toán tử INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB) VALUES (1, 2, 3, 'Fluffy', '2020-11-20'), (2, 3, 3, 'Fetch', '2019-08-16'), (3, 2, 2, 'Scratch', '2018-10-01');6

Nếu DBMS của bạn không hỗ trợ phương pháp trên để chèn nhiều hàng trong một câu lệnh

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
7, hãy thử phương pháp này

INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';

Ở đây, chúng tôi đang chọn từng hàng bằng câu lệnh

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
8, sau đó sử dụng toán tử
INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
6 để nối hàng đó với hàng tiếp theo

Chèn nhiều hàng trong Oracle

Các ví dụ về câu lệnh đơn-

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
7 ở trên sẽ không hoạt động với Cơ sở dữ liệu Oracle (ít nhất, không phải tại thời điểm viết). Chúng tôi vẫn có thể sử dụng nhiều câu lệnh
INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
7 để chèn nhiều hàng trong Oracle, nhưng nếu chúng tôi muốn thực hiện điều đó trong một câu lệnh
INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
7 duy nhất, chúng tôi sẽ cần sử dụng một cú pháp khác

Đây là một ví dụ về việc chèn nhiều hàng trong Oracle

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
0

Đây chỉ là một trong ít nhất bốn cách chúng ta có thể chèn nhiều hàng trong Oracle

Sử dụng Tuyên bố INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB ) SELECT 1, 2, 3, 'Fluffy', '2020-11-20' UNION ALL SELECT 2, 3, 3, 'Fetch', '2019-08-16' UNION ALL SELECT 3, 2, 2, 'Scratch', '2018-10-01';3

Chúng ta có thể sử dụng câu lệnh

INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
4 để chèn kết quả của một truy vấn vào một bảng mới

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
3

Thao tác này tạo một bảng mới có tên là

INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
5 (có cùng định nghĩa với
INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
6) và chèn kết quả truy vấn vào đó

Tiêu chuẩn SQL yêu cầu dấu ngoặc đơn xung quanh mệnh đề truy vấn phụ, nhưng chúng có thể là tùy chọn trong DBMS của bạn (ví dụ: PostgreSQL)

Sử dụng Tuyên bố INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB ) SELECT 1, 2, 3, 'Fluffy', '2020-11-20' UNION ALL SELECT 2, 3, 3, 'Fetch', '2019-08-16' UNION ALL SELECT 3, 2, 2, 'Scratch', '2018-10-01';7

Trong các DBMS như SQL Server và PostgreSQL, chúng tôi có tùy chọn sử dụng câu lệnh

INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
7 thay cho câu lệnh
INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
4

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
9

Ví dụ này thực hiện tương tự như ví dụ trước – nó tạo một bảng mới có tên là

INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
5 và chèn nội dung của
INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
6 vào đó

MariaDB hỗ trợ cú pháp này, nhưng nó chèn tập kết quả vào một biến. Trong Oracle, nó gán các giá trị đã chọn cho các biến hoặc bộ sưu tập. MySQL và SQLite hoàn toàn không hỗ trợ câu lệnh

INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
7

Sử dụng Tuyên bố INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB) VALUES (1, 2, 3, 'Fluffy', '2020-11-20'), (2, 3, 3, 'Fetch', '2019-08-16'), (3, 2, 2, 'Scratch', '2018-10-01');03

Một cách khác để chèn nhiều hàng vào một bảng từ truy vấn là sử dụng câu lệnh

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
03

INSERT INTO Pets (PetId, PetTypeId, OwnerId, PetName, DOB)
VALUES
    (1, 2, 3, 'Fluffy', '2020-11-20'),
    (2, 3, 3, 'Fetch', '2019-08-16'),
    (3, 2, 2, 'Scratch', '2018-10-01');
5

Tuy nhiên, phương pháp này yêu cầu bảng đã tồn tại. Do đó, trước khi chạy đoạn mã đó, chúng ta cần tạo bảng

INSERT INTO Pets ( PetId, PetTypeId, OwnerId, PetName, DOB )
    SELECT 1, 2, 3, 'Fluffy', '2020-11-20'
    UNION ALL
    SELECT 2, 3, 3, 'Fetch', '2019-08-16'
    UNION ALL
    SELECT 3, 2, 2, 'Scratch', '2018-10-01';
5 trước

Bạn có thể chèn vào nhiều hàng trong SQL không?

Truy vấn INSERT-SELECT-UNION để chèn nhiều bản ghi . Truy vấn SQL UNION giúp chọn tất cả dữ liệu đã được bao quanh bởi truy vấn SELECT thông qua câu lệnh INSERT.

Làm cách nào để chèn nhiều dữ liệu vào một bảng trong MySQL?

Chèn nhiều hàng trong MySQL với sự trợ giúp của “giá trị”. Bạn có thể đặt các giá trị trong dấu ngoặc đơn và phân tách bằng dấu phẩy .

Làm cách nào để chèn hàng loạt bản ghi trong MySQL?

Cú pháp chèn dữ liệu hàng loạt vào MySQL .
Nhập mệnh đề INSERT INTO và tên bảng mà bạn muốn chèn dữ liệu vào
Sử dụng mệnh đề GIÁ TRỊ và sau đó ghi dữ liệu của hàng đầu tiên vào trong ngoặc, đóng ngoặc và sau dấu phẩy

Làm cách nào để chèn 10000 bản ghi trong MySQL?

Điều này sẽ làm điều đó trong một câu lệnh SQL. $sql=" CHÈN VÀO wp_usermeta ('user_id', 'meta_key', 'meta_value') GIÁ TRỊ ";