Menggunakan SQL, Anda dapat menyalin informasi dari satu tabel ke tabel lainnya.
Pernyataan INSERT INTO SELECT menyalin data dari satu tabel dan memasukkannya ke dalam tabel yang ada.
Pernyataan INSERT INTO SELECT memilih data dari satu tabel dan memasukkannya ke dalam tabel yang ada. Setiap baris yang ada di tabel target tidak diubah.
Kita dapat menyalin semua kolom dari satu tabel ke tabel lain yang ada:
MASUKKAN KE DALAM Meja 2
PILIH * DARI Tabel 1;
Atau kita hanya bisa menyalin kolom yang kita inginkan ke tabel lain yang sudah ada:
MASUKKAN KE DALAM Meja 2
(nama_kolom)
PILIH kolom_nama(s)
DARI Tabel 1;
Dalam tutorial ini, kita akan menggunakan database Northwind yang terkenal.
Di bawah ini adalah pilihan dari tabel "Pelanggan":
identitas pengguna | Nama Klien | Orang yang dapat dihubungi | Alamat | kota | Kode Pos | Negara |
---|---|---|---|---|---|---|
1 | Alfred Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Jerman |
2 | Ana Trujillo Emparedados dan helados | Ana Trujillo | Avda. de la Konstitusi 2222 | Meksiko D.F. | 05021 | Meksiko |
3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Meksiko D.F. | 05023 | Meksiko |
Dan pilihan dari tabel "Pemasok":
Menyalin hanya beberapa kolom dari "Pemasok" Ke "Pelanggan" :
Salin hanya pemasok Jerman di "Pelanggan" .
Pernyataan ini menambahkan satu atau beberapa catatan ke tabel (melakukan kueri tambah).
Permintaan untuk menambahkan beberapa entri:
MASUKKAN KE DALAM target_objek [(bidang1[, bidang2[, ...]])]
PILIH[ sumber.]bidang1[, bidang2[, ...]
DARI tabel_ekspresi
Permintaan untuk menambahkan satu entri:
MASUKKAN KE DALAM target_objek [(bidang1[, bidang2[, ...]])]
NILAI ( bidang1[, bidang2[, ...])
Pernyataan INSERT INTO terdiri dari elemen-elemen berikut:
Bagian | Keterangan |
---|---|
target_objek |
Nama tabel atau kueri tempat rekaman ditambahkan. |
bidang1, bidang2 |
Setelah argumen target_objek- nama bidang tempat data ditambahkan; setelah argumen sumber- nama bidang dari mana data diambil. |
database_eksternal |
Jalan ke dasar eksternal data. Untuk deskripsi jalur, lihat artikel di klausa IN. |
sumber |
Nama tabel atau kueri tempat rekaman disalin. |
tabel_ekspresi |
Satu atau beberapa nama tabel untuk mengambil rekaman. Argumen ini bisa berupa nama tabel tunggal, hasil ekspresi INNER JOIN, LEFT JOIN, atau RIGHT JOIN, atau kueri yang disimpan. |
nilai1, nilai2 |
Nilai yang akan ditambahkan ke bidang tertentu dalam catatan baru. Setiap nilai dimasukkan ke dalam bidang yang sesuai dengan posisinya dalam daftar: nilai1 ditambahkan ke bidang1 rekor baru, nilai2- di bidang2 dll. Anda harus memisahkan nilai dengan koma dan melampirkan bidang teks dalam tanda petik (""). |
Pernyataan INSERT INTO dapat menambahkan satu record ke tabel menggunakan sintaks di atas. Dalam hal ini, nama dan nilai ditentukan untuk setiap bidang catatan. Anda harus menentukan semua bidang catatan yang nilainya ditetapkan dan nilainya yang sesuai. Jika Anda tidak menentukan nilai bidang, itu akan diberi nilai default atau NULL. Catatan ditambahkan ke akhir tabel.
Anda juga dapat menggunakan pernyataan INSERT INTO untuk menambahkan satu set rekaman dari tabel atau kueri lain menggunakan klausa SELECT... FROM, seperti yang ditunjukkan di atas (lihat Sintaks Kueri Beberapa Rekaman). Dalam hal ini, klausa SELECT menentukan bidang untuk ditambahkan ke yang ditentukan target_objek.
Sumber atau target_objek bisa berupa tabel atau query. Saat kueri diberikan, mesin database Microsoft Access menambahkan catatan ke semua tabel yang dikembalikannya.
Penggunaan pernyataan INSERT INTO adalah opsional. Jika ada, itu harus mendahului pernyataan SELECT.
Jika tabel target berisi kunci utama, pastikan nilai yang ditambahkan ke satu atau beberapa bidang kunci utama unik dan berbeda dari BATAL; jika tidak, tidak ada entri yang akan ditambahkan.
Jika rekaman ditambahkan ke tabel dengan bidang Hitung dan Anda ingin memberi nomor ulang, jangan sertakan bidang Hitung dalam kueri. Sertakan bidang "Penghitung" dalam kueri jika Anda ingin menyimpan nilai asli dari bidang tersebut.
Anda dapat menambahkan catatan ke tabel di database lain menggunakan klausa IN.
Untuk membuat tabel, gunakan pernyataan SELECT... INTO untuk mendapatkan kueri untuk membuat tabel.
Sebelum menjalankan kueri penambahan, gunakan kueri pemilihan dengan kriteria pemilihan yang sama untuk menentukan rekaman mana yang akan ditambahkan berdasarkan hasil.
Kueri penambahan menyalin rekaman dari satu atau beberapa tabel ke tabel lain. Pada saat yang sama, tabel yang berisi catatan tambahan tetap tidak berubah.
Alih-alih menambahkan catatan dari tabel lain, Anda dapat mengatur nilai setiap bidang dalam catatan baru yang terpisah menggunakan klausa VALUES. Jika daftar bidang dihilangkan, klausa VALUES harus menyertakan nilai yang sesuai untuk setiap bidang dalam tabel; jika tidak, operasi INSERT akan gagal. Gunakan pernyataan INSERT INTO bersama dengan klausa VALUES untuk setiap record tambahan yang ingin Anda buat.
Tim menambahkan baris ke tabel atau tampilan tabel utama.
Masukkan Sintaks Perintah
Penyataan dengan kalimat NILAI menambahkan satu baris ke tabel. String ini berisi nilai-nilai yang ditentukan oleh frasa NILAI.
Persetujuan dengan subkueri alih-alih frasa NILAI menambahkan ke tabel semua baris yang dikembalikan oleh subquery. Server sedang memproses subkueri dan menyisipkan setiap baris yang dikembalikan ke dalam tabel. Jika subquery tidak memilih baris apa pun, server tidak memasukkan baris apa pun ke dalam tabel.
Subkueri dapat merujuk ke tabel atau tampilan apa pun, termasuk tabel target pernyataan . Server memberikan nilai ke bidang di baris baru berdasarkan posisi internal kolom dalam tabel dan urutan nilai frasa NILAI atau dalam daftar pilihan kueri. Jika ada kolom yang hilang dari daftar kolom, server memberi mereka nilai default yang ditentukan saat tabel dibuat. Jika salah satu kolom ini memiliki batasan NOT NULL, maka server mengembalikan kesalahan yang menunjukkan bahwa batasan telah dilanggar dan membatalkan pernyataan INSERT.
Saat pernyataan INSERT dikeluarkan, pemicu INSERT apa pun yang ditentukan pada tabel akan disertakan.
MASUKKAN KE Contoh 1
MASUKKAN KE DALAM departemen NILAI(50, PRODUK, SAN FRANCISCO);
MASUKKAN KE DALAM Pelanggan (kota, cname, cnum) NILAI('London', 'Hoffman', 2001);
MASUKKAN KE Contoh 2
Perintah berikut menyalin data karyawan perusahaan yang komisinya melebihi 25% dari pendapatan ke tabel bonus:
MASUKKAN KE DALAM bonus SELECT ename, job, sal, comm FROM emp WHERE comm > 0.25 * sal;
MASUKKAN KE Contoh 3
Jika Anda perlu memasukkan BATAL-value, Anda harus menentukannya sebagai nilai normal sebagai berikut:
MASUKKAN KE DALAM Penjual NILAI(1001,'Kupas',NULL,12);
MASUKKAN KE Contoh 4
Perintah dapat digunakan untuk mengambil nilai dari satu tabel dan menempatkannya di tabel lain menggunakan kueri. Untuk melakukan ini, cukup dengan mengganti kalimat NILAI untuk permintaan yang relevan:
MASUKKAN KE DALAM Londonstaff SELECT * FROM Penjual WHERE city = 'London';
Untuk menyisipkan baris baru ke dalam database data MySQL digunakan perintah INSERT, contoh perintah diberikan di bawah ini:
MASUKKAN KE Contoh 1.
Memasukkan garis baru ke tabel table_name.
MASUKKAN KE DALAM
MASUKKAN KE Contoh 2.
Menyisipkan baris baru di tabel table_name menunjukkan penyisipan data ke dalam kolom yang kita butuhkan.
MASUKKAN KE DALAM table_name VALUES('1','165','0','nama');
Dalam database MySQL dimungkinkan untuk menyisipkan beberapa baris baru menggunakan satu perintah.
MASUKKAN KE Contoh 3.
Masukkan beberapa baris ke dalam tabel table_name.
MASUKKAN KE DALAM table_name (tbl_id, chislo, chislotwo, nama) VALUES ('1','159','34','name1'), ('2','14','61','name2'), ('3 ','356','8','nama3');
Mari kita lihat sintaks dasar dari perintah SQL INSERT yang ditunjukkan di bawah ini.
INSERT INTO `table_name`(column_1,column_2,...) NILAI (nilai_1,nilai_2,...);
Saat memasok nilai data yang akan dimasukkan ke dalam tabel baru, berikut ini harus dipertimbangkan saat menangani tipe data yang berbeda.
Contoh:
Misalkan kita memiliki daftar anggota perpustakaan baru berikut yang perlu ditambahkan ke dalam database.
Nama lengkap | Tanggal lahir | jenis kelamin | alamat fisik | Alamat pos | nomor kontak | Alamat email |
---|---|---|---|---|---|---|
Leonard Hofstadter | Pria | jambul kayu | 0845738767 | |||
Sheldon Cooper | Pria | jambul kayu | 0976736763 | |||
Rajesh Koothrappali | Pria | pandangan adil | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Pria | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Pria | Taman Selatan | PO Kotak 4563 | 0987786553 |
Mari" MASUKKAN data satu per satu. Kita akan mulai dengan Leonard Hofstadter. Kita akan memperlakukan nomor kontak sebagai tipe data numerik dan tidak melampirkan nomor dalam tanda kutip tunggal.
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Leonard Hofstadter",,"Pria",,"Woodcrest",0845738767);
Menjalankan script di atas menghilangkan 0 dari nomor kontak Leonard, karena nilainya akan diperlakukan sebagai nilai numerik dan nol (0) di awal dihilangkan karena tidak signifikan.
Untuk menghindari masalah seperti itu, nilai harus diapit dalam tanda kutip tunggal seperti yang ditunjukkan di bawah ini -
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Sheldon Cooper",,"Male",,"Woodcrest", "0976736763");
Dalam kasus di atas , nol(0) tidak akan dijatuhkan
Mengubah urutan kolom tidak berpengaruh pada kueri INSERT selama nilai yang benar telah dipetakan ke kolom yang benar.
Kueri yang ditunjukkan di bawah ini menunjukkan poin di atas.
INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`)VALUES ("0938867763",,"Male",,"Rajesh Koothrappali",,"Woodcrest");
Kueri di atas melewatkan kolom tanggal lahir, secara default MySQL akan memasukkan nilai NULL pada kolom yang dilewati pada query INSERT.
Sekarang mari kita masukkan catatan untuk Leslie yang memiliki tanggal lahir yang disertakan. Nilai tanggal harus diapit dalam tanda kutip tunggal menggunakan format "YYYY-MM-DD".
INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) NILAI ("Leslie Winkle",,"1984-02-14",,"Pria",,"Woodcrest", " 0987636553");
Semua kueri di atas menentukan kolom dan memetakannya ke nilai dalam pernyataan sisipan. Jika kami memberikan nilai untuk SEMUA kolom dalam tabel, maka kami dapat menghilangkan kolom dari kueri penyisipan.
INSERT INTO `members` VALUES (9,"Howard Wolowitz", "Male", "1981-08-24", "SouthPark", "PO Box 4563", "0987786553", "lwolowitzemail.me");
Mari sekarang gunakan pernyataan SELECT untuk melihat semua baris dalam tabel anggota. SELECT * FROM `members`;
Nomor keanggotaan | nama lengkap | jenis kelamin | tanggal lahir | alamat fisik | alamat_pos | nomor_kontak | surel |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Perempuan | 21-07-1980 | Plot Jalan Pertama No 4 | Tas Pribadi | 0759 253 542 | Alamat email ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya. |
2 | Janet Smith Jones | Perempuan | 23-06-1980 | Melrose 123 | BATAL | BATAL | Alamat email ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya. |
3 | Robert Phil | Pria | 12-07-1989 | 3rd Street 34 | BATAL | 12345 | Alamat email ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya. |
4 | Gloria Williams | Perempuan | 14-02-1984 | Jalan 2 23 | BATAL | BATAL | BATAL |
5 | Leonard Hofstadter | Pria | BATAL | jambul kayu | BATAL | 845738767 | BATAL |
6 | Sheldon Cooper | Pria | BATAL | jambul kayu | BATAL | 976736763 | BATAL |
7 | Rajesh Koothrappali | Pria | BATAL | jambul kayu | BATAL | 938867763 | BATAL |
8 | Leslie Winkle | Pria | 14-02-1984 | jambul kayu | BATAL | 987636553 | BATAL |
9 | Howard Wolowitz | Pria | 24-08-1981 | Taman Selatan | PO Kotak 4563 | 987786553 | Alamat email ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya. |
Perhatikan nomor kontak untuk Leonard Hofstadter telah menjatuhkan nol (0) dari nomor kontak. Nomor kontak lainnya tidak menjatuhkan nol (0) di awal.
Perintah INSERT juga dapat digunakan untuk memasukkan data ke dalam tabel dari tabel lain. Sintaks dasarnya adalah seperti yang ditunjukkan di bawah ini.
INSERT INTO table_1 SELECT * FROM table_2;
Sekarang mari kita lihat contoh praktis, kita akan membuat tabel dummy untuk kategori film untuk tujuan demonstrasi. Kita akan memanggil tabel kategori baru arsip kategori. Skrip yang ditunjukkan di bawah ini membuat tabel.
CREATE TABLE `categories_archive` (`category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`))
Jalankan skrip di atas untuk membuat tabel.
Mari sekarang masukkan semua baris dari tabel kategori ke dalam tabel arsip kategori. Skrip yang ditunjukkan di bawah ini membantu kita mencapainya.
INSERT INTO `categories_archive` SELECT * FROM `categories`;
Menjalankan skrip di atas menyisipkan semua baris dari tabel kategori ke dalam tabel arsip kategori. Perhatikan bahwa struktur tabel harus sama agar skrip berfungsi. Skrip yang lebih kuat adalah skrip yang memetakan nama kolom di tabel sisipan ke yang ada di tabel yang berisi data.
Kueri yang ditunjukkan di bawah ini menunjukkan penggunaannya.
INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;
Menjalankan kueri SELECT
PILIH * DARI `kategori_arsip`
memberikan hasil berikut yang ditunjukkan di bawah ini.
kategori_id | Nama Kategori | Catatan |
---|---|---|
1 | Komedi | Film dengan humor |
2 | Romantis | cerita Cinta |
3 | epik | cerita film kuno |
4 | Kengerian | BATAL |
5 | fiksi ilmiah | BATAL |
6 | Cerita menegangkan | BATAL |
7 | Tindakan | BATAL |
8 | komedi romantis | BATAL |
9 | Kartun | BATAL |
10 | Kartun | BATAL |
Halo semua! Artikel ini akan membahas bagaimana Anda bisa tambahkan data ke tabel di Microsoft SQL Server, jika Anda setidaknya sudah sedikit akrab dengan bahasa T-SQL, maka Anda mungkin menyadari bahwa sekarang kita akan berbicara tentang pernyataan INSERT, serta bagaimana itu dapat digunakan untuk menambahkan data ke tabel.
Mari kita mulai dengan sedikit teori.
MEMASUKKAN adalah instruksi T-SQL yang dirancang untuk menambahkan data ke tabel, mis. membuat entri baru. Instruksi ini dapat digunakan baik untuk menambahkan satu baris ke tabel, dan untuk sisipan massal data. Pernyataan INSERT memerlukan izin untuk memasukkan data ( MEMASUKKAN) ke tabel sasaran.
Ada beberapa cara untuk menggunakan pernyataan INSERT pada bagian data yang perlu dimasukkan:
Sintaks yang disederhanakan
MASUKKAN [tabel] ( daftar kolom...) NILAI ( daftar nilai, … ) atau PILIH permintaan sampel Atau EKSEKUSI prosedur
Seperti inilah sintaks yang disederhanakan dari pernyataan INSERT INTO, dalam banyak kasus ini adalah bagaimana Anda akan menambahkan catatan baru ke tabel.
Daftar kolom tempat Anda akan memasukkan data dapat dihilangkan, dalam hal ini urutannya akan ditentukan berdasarkan urutan kolom yang sebenarnya dalam tabel. Namun, Anda harus mengingat urutan ini saat Anda menentukan nilai untuk menyisipkan atau menulis kueri pemilihan. Secara pribadi, saya menyarankan Anda tetap menentukan daftar kolom di mana Anda berencana untuk menambahkan data.
Juga harus diingat bahwa dalam daftar kolom dan dalam daftar nilai, masing-masing, harus ada yang disebut kolom wajib, ini adalah yang tidak dapat berisi nilai NULL. Jika tidak ditentukan, dan kolom tidak memiliki nilai default, kesalahan akan terjadi.
Saya juga ingin mencatat bahwa tipe data nilai yang akan Anda masukkan harus cocok dengan tipe data kolom tempat nilai ini akan dimasukkan, atau setidaknya mendukung konversi implisit. Tapi saya menyarankan Anda untuk mengontrol tipe data ( format) nilai, baik dalam daftar nilai maupun dalam kueri SELECT.
Cukup teorinya, mari kita lanjutkan ke praktik.
Untuk menambahkan data ke tabel, kita memerlukan tabel itu sendiri, masing-masing, mari kita buat, dan kita sudah akan mencoba menambahkan catatan ke dalamnya.
Catatan! Semua contoh akan dijalankan di Microsoft SQL Server 2016 Express.
BUAT TABEL TestTable( IDENTITY(1,1) NOT NULL, (100) NOT NULL, NOT NULL)
Tabel pengujian kami akan berisi daftar produk dengan harga.
Juga dalam contoh, kita akan menggunakan prosedur yang mengembalikan nilai tabel untuk menambahkan data ke tabel, jadi mari kita buat juga.
BUAT PROSEDUR TestProcedure AS MULAI PILIH ProductName, Harga DARI TestTable AKHIR
Misalnya, ini akan mengembalikan data dari tabel TestTable yang baru dibuat.
Catatan!
Seperti yang Anda pahami, membaca materi ini menyiratkan ketersediaan pengetahuan tertentu tentang T-SQL, jadi jika ada sesuatu yang tidak jelas bagi Anda, saya sarankan Anda membaca materi berikut:
Pertama, mari kita coba tambahkan satu record dan langsung lihat hasilnya, mis. Mari kita menulis kueri untuk pilihan.
INSERT INTO TestTable(ProductName, Price) VALUES("Computer", 100) GO SELECT * FROM TestTable
Anda dapat melihat bahwa setelah nama tabel kami mencantumkan nama kolom yang akan kami tambahkan data, dipisahkan dengan koma, lalu kami menunjukkan kata kunci NILAI dan dalam tanda kurung juga, dalam urutan yang sama, dipisahkan dengan koma, kami menulis nilai yang ingin kami masukkan.
Setelah pernyataan INSERT, saya menulis pernyataan SELECT dan memisahkannya dengan perintah GO.
Sekarang mari kita bayangkan bahwa kita perlu menambahkan beberapa baris. Kami akan menulis kueri berikut untuk ini.
INSERT INTO TestTable(ProductName, Price) VALUES ("Computer", 100), ("Keyboard", 20), ("Monitor", 50) GO SELECT * FROM TestTable
Sangat sering ada kebutuhan untuk menambahkan banyak data ke tabel, misalnya, berdasarkan kueri pemilihan, mis. PILIH. Untuk melakukan ini, alih-alih VALUES, kita hanya perlu menentukan kueri.
INSERT INTO TestTable(ProductName, Price) SELECT ProductName, Price FROM TestTable WHERE Id >
PADA contoh ini kami menulis kueri SELECT yang mengembalikan data dari TestTable, tetapi tidak semua, tetapi hanya yang memiliki pengenal lebih besar dari 2. Dan hasilnya dimasukkan ke dalam TestTable yang sama.
Sebagai contoh bagaimana Anda bisa menambahkan catatan ke tabel tanpa menentukan daftar kolom, mari kita tulis kueri penyisipan lain yang melakukan hal yang sama seperti kueri di atas, hanya saja tidak mencantumkan kolom yang akan disisipkan.
INSERT INTO TestTable SELECT ProductName, Harga FROM TestTable WHERE Id > 2 GO SELECT * FROM TestTable
Dalam hal ini, kami yakin bahwa di TestTable kolom pertama adalah ProductName dan yang kedua adalah Harga, jadi kami dapat menulisnya seperti itu. Tetapi, sekali lagi, dalam praktiknya lebih baik menentukan daftar kolom.
Jika Anda perhatikan, saya tidak menentukan kolom Id di semua contoh, tetapi kami memilikinya, tidak ada kesalahan, karena kolom yang diberikan dengan properti IDENTITY, secara otomatis menghasilkan pengidentifikasi, jadi memasukkan data ke dalam kolom seperti itu tidak akan berfungsi.
Sekarang mari kita masukkan data ke dalam tabel yang akan dikembalikan oleh stored procedure kepada kita. Arti di sini adalah sama, alih-alih VALUES dan alih-alih kueri, kami menetapkan panggilan prosedur. Tetapi seperti yang Anda pahami, urutan dan jumlah kolom yang dikembalikan oleh prosedur harus benar-benar cocok dengan daftar kolom yang akan disisipkan ( bahkan jika daftar kolom tidak ditentukan).
INSERT INTO TestTable(ProductName, Price) EXEC TestProcedure GO SELECT * FROM TestTable
Saya harap materi ini membantu Anda memahami instruksi. MASUKKAN KE DALAM, dan saya memiliki segalanya untuk saat ini!