Kita dapat menggunakan pernyataan SQL INSERT_ untuk menyisipkan baris ke dalam tabel. Kita juga bisa menggunakannya untuk menyisipkan lebih dari satu baris
Di bawah ini adalah tujuh cara untuk memasukkan banyak baris ke dalam tabel di SQL. Sebagian besar contoh ini harus bekerja di RDBMS utama, dengan kemungkinan pengecualian Oracle. Tapi jangan khawatir, saya telah menyertakan contoh hanya untuk Oracle
Gunakan Beberapa Pernyataan INSERT
Salah satu cara untuk menyisipkan banyak baris adalah dengan menggunakan pernyataan INSERT terpisah untuk setiap baris
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' );Di sini, kami menyisipkan tiga baris ke dalam tabel bernama 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. Setiap baris memiliki pernyataan INSERT sendiri
Berikan Semua Data dalam 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 Klausul
Di sebagian besar RDBMS utama (kecuali Oracle), kami dapat mengirimkan data untuk banyak baris dalam satu klausa 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
Di sini, kami menggunakan satu pernyataan INSERT_, dengan setiap data baris dipisahkan dengan koma
Menggabungkan Baris dengan 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 Pernyataan dan 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 Operator
Jika DBMS Anda tidak mendukung metode di atas untuk menyisipkan banyak baris dalam satu pernyataan INSERT, coba metode ini
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';Di sini, kami memilih setiap baris dengan pernyataan 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, lalu menggunakan operator 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 untuk menggabungkan baris tersebut dengan baris berikutnya
Masukkan Banyak Baris di Oracle
Contoh pernyataan tunggal-INSERT di atas tidak akan berfungsi dengan Oracle Database (setidaknya, tidak pada saat penulisan). Kita masih bisa menggunakan beberapa pernyataan INSERT_ untuk menyisipkan banyak baris di Oracle, tetapi jika kita ingin melakukannya dalam satu pernyataan INSERT, kita perlu menggunakan sintaks yang berbeda
Berikut adalah contoh menyisipkan banyak baris di Oracle
Ini hanyalah salah satu dari setidaknya empat cara untuk menyisipkan banyak baris di Oracle
Gunakan Pernyataan 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
Kita dapat menggunakan pernyataan 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 untuk menyisipkan hasil kueri ke dalam tabel baru
CREATE TABLE Pets2 AS (SELECT * FROM Pets);Ini membuat tabel baru bernama 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 (dengan definisi yang sama dengan 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), dan menyisipkan hasil kueri ke dalamnya
Standar SQL memerlukan tanda kurung di sekitar klausa subkueri, tetapi mungkin bersifat opsional di DBMS Anda (misalnya PostgreSQL)
Gunakan Pernyataan 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
Dalam DBMS seperti SQL Server dan PostgreSQL, kami memiliki opsi untuk menggunakan pernyataan 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 sebagai pengganti pernyataan 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
Contoh ini melakukan hal yang sama seperti yang sebelumnya – ini membuat tabel baru bernama 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 dan menyisipkan konten 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 ke dalamnya
MariaDB mendukung sintaks ini, tetapi menyisipkan set hasil ke dalam variabel. Di Oracle, ini memberikan nilai yang dipilih ke variabel atau koleksi. MySQL dan SQLite tidak mendukung pernyataan 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 sama sekali
Gunakan Pernyataan 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
Cara lain untuk menyisipkan banyak baris ke dalam tabel dari kueri adalah dengan pernyataan 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;Namun, metode ini mengharuskan tabel sudah ada. Oleh karena itu, sebelum menjalankan kode tersebut, kita perlu membuat tabel 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 terlebih dahulu