Chèn mysql chọn nhiều hàng

Chúng ta có thể sử dụng câu lệnh SQL INSERT để 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

Show

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

Một cách để chèn nhiều hàng là sử dụng câu lệnh INSERT 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 riêng

Cung cấp tất cả dữ liệu trong 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 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â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, 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 ở 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 để chèn nhiều hàng trong Oracle, nhưng nếu chúng tôi muốn làm điều đó trong một câu lệnh INSERT 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 Products (ProductId, ProductName, Price) 
    WITH p AS ( 
        SELECT 1, 'Left Handed Screwdriver', 10.50 FROM dual UNION ALL 
        SELECT 2, 'Right Handed Screwdriver', 22.75 FROM dual UNION ALL 
        SELECT 3, 'Bottomless Coffee Cup (4 pack)', 15.00 FROM dual UNION ALL 
        SELECT 4, 'Urban Dictionary Version 2.3', 75 FROM dual UNION ALL
        SELECT 5, 'Beer Water', 15 FROM dual
  )
SELECT * FROM p;

Đâ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

CREATE TABLE Pets2 AS
(SELECT * FROM Pets);

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

SELECT * INTO Pets2
FROM Pets;

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 Products (ProductId, ProductName, Price) WITH p AS ( SELECT 1, 'Left Handed Screwdriver', 10.50 FROM dual UNION ALL SELECT 2, 'Right Handed Screwdriver', 22.75 FROM dual UNION ALL SELECT 3, 'Bottomless Coffee Cup (4 pack)', 15.00 FROM dual UNION ALL SELECT 4, 'Urban Dictionary Version 2.3', 75 FROM dual UNION ALL SELECT 5, 'Beer Water', 15 FROM dual ) SELECT * FROM p;3

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

INSERT INTO Products (ProductId, ProductName, Price) 
    WITH p AS ( 
        SELECT 1, 'Left Handed Screwdriver', 10.50 FROM dual UNION ALL 
        SELECT 2, 'Right Handed Screwdriver', 22.75 FROM dual UNION ALL 
        SELECT 3, 'Bottomless Coffee Cup (4 pack)', 15.00 FROM dual UNION ALL 
        SELECT 4, 'Urban Dictionary Version 2.3', 75 FROM dual UNION ALL
        SELECT 5, 'Beer Water', 15 FROM dual
  )
SELECT * FROM p;
3

INSERT INTO Pets2
SELECT * FROM Pets;

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

Làm cách nào để chèn nhiều hàng trong MySQL cùng một lúc?

MySQL Chèn nhiều hàng .
Đầ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 đề GIÁ TRỊ. Mỗi phần tử của danh sách đại diện cho một hàng

Làm cách nào để chèn nhiều hàng bằng cách chọn trong SQL?

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 hàng trong MySQL?

Để chọn nhiều giá trị, bạn có thể sử dụng mệnh đề where với toán tử OR và IN .

Làm cách nào để chèn dữ liệu hàng loạt vào 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