Rumah / Tutorial Windows / Transact-SQL - memasukkan data. SQL query INSERT INTO - isi database dengan informasi Masukkan ke dalam sintaks

Transact-SQL - memasukkan data. SQL query INSERT INTO - isi database dengan informasi Masukkan ke dalam sintaks

Di bagian sebelumnya, kami mempertimbangkan pekerjaan memperoleh data dari tabel yang dibuat sebelumnya. Sekarang saatnya untuk mencari tahu bagaimana kita dapat membuat / menghapus tabel, menambahkan catatan baru dan menghapus yang lama. Untuk tujuan ini di SQL ada operator seperti: MEMBUAT- membuat tabel MENGUBAH- mengubah struktur tabel, MENJATUHKAN- menghapus tabel atau bidang, MEMASUKKAN- menambahkan data ke tabel. Mari kita mulai kenalan kita dengan grup operator ini dari operator MEMASUKKAN.

1. Menambahkan seluruh baris

Seperti namanya, operator MEMASUKKAN digunakan untuk menyisipkan (menambahkan) baris ke tabel database. Menambahkan dapat dilakukan dengan beberapa cara:

  • - tambahkan satu baris penuh
  • - tambahkan bagian dari string
  • - tambahkan hasil kueri.

Jadi, untuk menambahkan baris baru ke tabel, kita perlu menentukan nama tabel, mencantumkan nama kolom, dan menentukan nilai untuk setiap kolom menggunakan konstruk MASUKKAN KE DALAM table_name (bidang1, bidang2 ...) NILAI (nilai1, nilai2 ...). Mari kita lihat sebuah contoh.

INSERT INTO Sellers (ID, Alamat, Kota, Seller_name, Negara) NILAI("6", "1st Street", "Los Angeles", "Harry Monroe", "AS")

Anda juga dapat mengubah urutan nama kolom, tetapi pada saat yang sama Anda perlu mengubah urutan nilai dalam parameter NILAI.

2. Menambahkan bagian dari garis

Pada contoh sebelumnya, saat menggunakan operator MEMASUKKAN kami secara eksplisit menandai nama kolom tabel. Dengan menggunakan sintaks ini, kita dapat melewati beberapa kolom. Ini berarti Anda memasukkan nilai untuk beberapa kolom tetapi tidak memberikan nilai untuk yang lain. Sebagai contoh:

INSERT INTO Sellers (ID, Kota, Seller_name) NILAI("6", "Los Angeles", "Harry Monroe")

PADA contoh ini kami tidak menentukan nilai untuk dua kolom Alamat dan Negara. Anda dapat mengecualikan beberapa kolom dari pernyataan MASUKKAN KE DALAM, jika memungkinkan definisi tabel. Dalam hal ini, salah satu kondisi berikut harus dipenuhi: kolom ini didefinisikan sebagai mengizinkan nilai BATAL(tidak adanya nilai apa pun) atau dalam definisi tabel nilai default yang ditentukan. Ini berarti bahwa jika tidak ada nilai yang ditentukan, nilai default akan digunakan. Jika Anda melewatkan kolom dalam tabel yang tidak mengizinkan nilai di barisnya BATAL dan tidak memiliki nilai default yang ditentukan, DBMS akan mengeluarkan pesan kesalahan dan baris ini tidak akan ditambahkan.

3. Menambahkan data yang dipilih

Pada contoh sebelumnya, kami memasukkan data ke dalam tabel dengan menuliskannya secara manual di kueri. Namun, operator MASUKKAN KE DALAM memungkinkan kita untuk mengotomatisasi proses ini jika kita ingin memasukkan data dari tabel lain. Untuk melakukan ini, SQL memiliki struktur seperti ini: MASUKKAN KE ... PILIH .... Desain ini memungkinkan Anda untuk secara bersamaan memilih data dari satu tabel dan memasukkannya ke tabel lain. Misalkan kita memiliki meja lain Penjual_EU dengan daftar penjual barang kami di Eropa dan kami perlu menambahkannya ke tabel umum Penjual. Struktur tabel-tabel ini sama (jumlah kolom dan nama sama), tetapi datanya berbeda. Untuk melakukan ini, kita dapat menulis kueri berikut:

INSERT INTO Sellers (ID, Alamat, Kota, Seller_name, Negara) SELECTID, Alamat, Kota, Seller_name, Negara FROM Sellers_EU

Anda perlu memperhatikan bahwa nilai kunci internal tidak berulang (bidang PENGENAL), jika tidak akan terjadi kesalahan. Operator PILIH mungkin juga termasuk saran DI MANA untuk menyaring data. Perlu juga diperhatikan bahwa DBMS tidak memperhatikan nama-nama kolom yang terdapat pada pernyataan tersebut PILIH, hanya urutan pengaturan mereka yang penting baginya. Oleh karena itu, data di kolom pertama yang ditentukan yang dipilih karena PILIH, akan diisi pada kolom pertama tabel pula Penjual ditentukan setelah operator MASUKKAN KE DALAM, terlepas dari nama bidang.

4. Menyalin data dari satu tabel ke tabel lainnya

Seringkali, ketika bekerja dengan database, menjadi penting untuk membuat salinan tabel apa pun untuk tujuan pencadangan atau modifikasi. Untuk membuat salinan lengkap dari tabel di SQL, pernyataan terpisah disediakan PILIH KE. Misalnya, kita perlu membuat salinan tabel Penjual, Anda harus menulis permintaan sebagai berikut:

PILIH * INTO Sellers_new FROM Sellers

Berbeda dengan desain sebelumnya MASUKKAN KE ... PILIH ... ketika data ditambahkan ke tabel yang ada, konstruk menyalin data ke tabel baru. Dapat juga dikatakan bahwa yang pertama mengkonstruksi data impor, sedangkan yang kedua mengkonstruksi ekspor. Saat menggunakan struktur PILIH ... KE ... DARI ... berikut ini harus diperhitungkan:

  • - Anda dapat menggunakan kalimat apa pun di operator PILIH, seperti KELOMPOK OLEH dan MEMILIKI
  • - join dapat digunakan untuk menambahkan data dari beberapa tabel
  • - data hanya dapat ditambahkan ke satu tabel, terlepas dari berapa banyak tabel yang diambil.

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.

SQL INSERT INTO SELECT,

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.

SQL INSERT INTO SELECT, Sintaks

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;

Basis data demo

Dalam tutorial ini, kita akan menggunakan database Northwind yang terkenal.

Di bawah ini adalah pilihan dari tabel "Pelanggan":

identitas penggunaNama KlienOrang yang dapat dihubungiAlamatkotaKode PosNegara
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":

SQL INSERT INTO SELECT, Contoh

Menyalin hanya beberapa kolom dari "Pemasok" Ke "Pelanggan" :

Salin hanya pemasok Jerman di "Pelanggan" .

Apa itu INSERT INTO?

Tujuan utama dari sistem database adalah untuk menyimpan data dalam tabel. Data biasanya disediakan oleh program aplikasi yang berjalan di atas database. Untuk itu, SQL memiliki perintah INSERT yang digunakan untuk menyimpan data ke dalam tabel. Itu Perintah INSERT membuat baris baru dalam tabel untuk menyimpan data.

Sintaks dasar

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,...);

  • MASUKKAN KE `nama_tabel` adalah perintah yang memberitahu server MySQL untuk menambahkan baris baru ke dalam tabel bernama `table_name`.
  • (kolom_1,kolom_2,...) menentukan kolom yang akan diperbarui di baris baru
  • NILAI (nilai_1,nilai_2,...) menentukan nilai yang akan ditambahkan ke baris baru

Saat memasok nilai data yang akan dimasukkan ke dalam tabel baru, berikut ini harus dipertimbangkan saat menangani tipe data yang berbeda.

  • Tipe data string- semua nilai string harus diapit dalam tanda kutip tunggal.
  • Tipe data numerik- semua nilai numerik harus diberikan secara langsung tanpa menyertakannya dalam tanda kutip tunggal atau ganda.
  • Tipe data tanggal- lampirkan nilai tanggal dalam tanda kutip tunggal dalam format "YYYY-MM-DD".

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. Kami akan memperlakukan nomor kontak sebagai tipe data numerik dan tidak menyertakan nomor dalam tanda kutip tunggal.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Leonard Hofstadter",,"Pria",,"Woodcrest",0845738767);

Eksekusi script di atas menghilangkan 0 dari nomor kontak Leonard, karena nilai 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",,"Pria",,"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 keanggotaannama lengkapjenis kelamintanggal lahiralamat fisikalamat_posnomor_kontaksurel
1 Janet JonesPerempuan21-07-1980 Plot Jalan Pertama No 4Tas Pribadi0759 253 542 Alamat email ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya.
2 Janet Smith JonesPerempuan23-06-1980 Melrose 123BATALBATALAlamat email ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya.
3 Robert PhilPria12-07-1989 3rd Street 34BATAL12345 Alamat email ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya.
4 Gloria WilliamsPerempuan14-02-1984 Jalan 2 23BATALBATALBATAL
5 Leonard HofstadterPriaBATALjambul kayuBATAL845738767 BATAL
6 Sheldon CooperPriaBATALjambul kayuBATAL976736763 BATAL
7 Rajesh KoothrappaliPriaBATALjambul kayuBATAL938867763 BATAL
8 Leslie WinklePria14-02-1984 jambul kayuBATAL987636553 BATAL
9 Howard WolowitzPria24-08-1981 Taman SelatanPO Kotak 4563987786553 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.

Memasukkan ke dalam Tabel dari Tabel lain

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_idNama KategoriCatatan
1 KomediFilm dengan humor
2 Romantiscerita Cinta
3 epikcerita film kuno
4 KengerianBATAL
5 fiksi ilmiahBATAL
6 Cerita menegangkanBATAL
7 tindakanBATAL
8 komedi romantisBATAL
9 KartunBATAL
10 KartunBATAL

Ringkasan

  • Perintah INSERT digunakan untuk menambahkan data baru ke dalam tabel
  • Nilai tanggal dan string harus diapit dalam tanda kutip tunggal.
  • Nilai numerik tidak perlu diapit tanda kutip.
  • Perintah INSERT juga dapat digunakan untuk menyisipkan data dari satu tabel ke tabel lainnya.

Pernyataan INSERT menyisipkan catatan baru ke dalam tabel. Dalam hal ini, nilai kolom dapat berupa konstanta literal, atau hasil dari subquery. Dalam kasus pertama, pernyataan INSERT terpisah digunakan untuk menyisipkan setiap baris; dalam kasus kedua, sebanyak baris yang dikembalikan oleh subquery akan dimasukkan.

Sintaks operatornya adalah sebagai berikut:

    MASUKKAN KE DALAM[(,...)]

    (NILAI(,…) )

  1. | ( NILAI DASAR )

Seperti yang Anda lihat dari sintaks yang disajikan, daftar kolom adalah opsional (tanda kurung siku dalam deskripsi sintaks menunjukkan ini). Jika tidak ada, daftar nilai yang dimasukkan harus lengkap, yaitu memberikan nilai untuk semua kolom tabel. Urutan nilai harus sesuai dengan urutan yang ditentukan oleh pernyataan CREATE TABLE untuk tabel tempat baris dimasukkan. Selain itu, nilai-nilai ini harus memiliki tipe data yang sama dengan kolom tempat mereka dimasukkan. Sebagai contoh, pertimbangkan untuk menyisipkan baris ke dalam tabel Produk yang dibuat oleh pernyataan CREATE TABLE berikut:

    BUAT produk TABEL

    pembuat char (1) TIDAK NULL,

    model varchar(4) TIDAK NULL ,

    ketik varchar(7) NOT NULL

Biarkan diperlukan untuk menambahkan model PC 1157 dari pabrikan B ke tabel ini. Ini dapat dilakukan dengan pernyataan berikut:

    MASUKKAN KE PRODUK

    NILAI ("B", 1157, "PC");

Jika Anda menentukan daftar kolom, Anda dapat mengubah urutan "alami" dari urutannya:

    INSERT INTO Product (tipe, model, pembuat)

    NILAI ("PC", 1157, "B");

Tampaknya ini adalah fitur yang sama sekali tidak perlu, yang hanya membuat desain lebih rumit. Namun, itu menang jika kolom memiliki nilai default. Perhatikan struktur tabel berikut ini:

    BUAT TABEL produk_D

    pembuat char (1) NULL ,

    model varchar(4) NULL ,

    ketik varchar (7) NOT NULL DEFAULT "PC"

Perhatikan bahwa di sini nilai semua kolom memiliki nilai default (dua yang pertama adalah NULL dan kolom terakhir adalah tipe - PC). Sekarang kita bisa menulis:

    INSERT INTO Product_D(model, pembuat)

    NILAI(1157 , "B" );

Dalam hal ini, nilai yang hilang akan diganti dengan nilai default, PC, ketika sebuah baris dimasukkan. Perhatikan bahwa jika tidak ada nilai default yang ditentukan untuk kolom dalam pernyataan CREATE TABLE, dan tidak ada batasan NOT NULL yang ditentukan yang melarang penggunaan NULL di kolom tabel itu, maka nilai default NULL tersirat.

Muncul pertanyaan: apakah mungkin untuk tidak menentukan daftar kolom dan, bagaimanapun, menggunakan nilai default? Jawabannya adalah positif. Untuk melakukan ini, alih-alih secara eksplisit menentukan nilai, gunakan kata yang dicadangkan DEFAULT :

    MASUKKAN KE Produk_D

    NILAI ("B", 1158, DEFAULT);

Karena semua kolom memiliki nilai default, untuk menyisipkan baris dengan nilai default, seseorang dapat menulis:

    MASUKKAN KE Produk_D

    NILAI (DEFAULT, DEFAULT, DEFAULT);

Namun, ada konstruk DEFAULT VALUES khusus untuk kasus ini (lihat sintaks operator), yang dapat digunakan untuk menulis ulang operator di atas sebagai

    INSERT INTO Product_D NILAI DEFAULT ;

Perhatikan bahwa saat memasukkan baris ke dalam tabel, semua batasan dikenakan pada meja ini. Ini bisa menjadi kendala kunci utama atau indeks unik, periksa batasan tipe CHECK , batasan integritas referensial. Jika ada batasan yang dilanggar, penyisipan baris akan ditolak. Pertimbangkan sekarang kasus penggunaan subquery. Misalkan kita ingin memasukkan ke dalam tabel Product_D semua baris dari tabel Produk yang terkait dengan model komputer pribadi(ketik = 'PC'). Karena nilai yang kita butuhkan sudah ada di beberapa tabel, pembentukan baris yang disisipkan secara manual, pertama, tidak efisien, dan, kedua, memungkinkan kesalahan input. Menggunakan subquery memecahkan masalah ini:

Penggunaan simbol "*" dalam subquery dibenarkan dalam kasus ini, karena urutan kolomnya sama untuk kedua tabel. Jika bukan ini masalahnya, daftar kolom harus diterapkan baik dalam pernyataan INSERT, atau di subquery, atau keduanya, yang akan cocok dengan urutan kolom:

Di sini, seperti sebelumnya, Anda dapat menentukan tidak semua kolom jika Anda ingin menggunakan nilai default yang ada, misalnya:

Dalam hal ini, kolom tipe tabel Product_D akan disetel ke nilai default PC untuk semua baris yang disisipkan.

Perhatikan bahwa saat menggunakan subkueri yang berisi predikat, hanya baris tersebut yang akan disisipkan dengan nilai predikat TRUE (bukan UNKNOWN !). Dengan kata lain, jika kolom tipe dalam tabel Produk dapat dibatalkan dan nilai tersebut ada dalam sejumlah baris, baris tersebut tidak akan dimasukkan ke dalam tabel Product_D.

Untuk mengatasi batasan penyisipan satu baris dalam pernyataan INSERT saat menggunakan konstruktor baris dalam klausa VALUES, trik buatan adalah menggunakan subquery yang membentuk baris dengan klausa UNION ALL. Jadi jika kita perlu menyisipkan beberapa baris dengan satu pernyataan INSERT, kita dapat menulis:

    MASUKKAN KE Produk_D

    PILIH pembuat AS "B", model AS 1158, jenis AS "PC"

    UNI ALL

    PILIH "C", 2190, "Laptop"

    UNI ALL

    PILIH "D", 3219, "Printer";

Menggunakan UNION ALL lebih disukai daripada UNION meskipun dijamin tidak akan ada baris duplikat, karena dalam hal ini tidak akan ada pemeriksaan duplikat.

Perlu dicatat bahwa menyisipkan beberapa tupel menggunakan konstruktor string sudah diimplementasikan di Sistem manajemen basis data relasional (DBMS) dikembangkan oleh Microsoft Corporation.Structured Query Language adalah bahasa komputer tujuan umum yang digunakan untuk membuat, memodifikasi, dan memanipulasi data dalam database relasional. SQL Server 2008. Mengingat kemungkinan ini, kueri terakhir dapat ditulis ulang sebagai:

    MASUKKAN KE NILAI PRODUK_D

    ("B", 1158, "PC") ,

    ("C", 2190, "Laptop") ,

Selain pernyataan SELECT yang dibahas sebelumnya, Data Manipulation Language (DML) berisi tiga pernyataan lain: INSERT, UPDATE, dan DELETE. Seperti pernyataan SELECT, ketiga pernyataan ini beroperasi pada tabel atau tampilan. Artikel ini membahas pernyataan INSERT, dan dua pernyataan lainnya dibahas di artikel berikutnya.

MASUKKAN Pernyataan menyisipkan baris (atau bagian dari baris) ke dalam tabel. Ada dua bentuk yang berbeda instruksi ini:

INSERT tab_name [(col_list)] NILAI DEFAULT | NILAI (( DEFAULT | NULL | ekspresi ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) Konvensi Sintaks

Bentuk pernyataan pertama memungkinkan Anda untuk menyisipkan satu baris (atau bagian darinya) ke dalam tabel. Dan bentuk kedua dari pernyataan INSERT memungkinkan Anda untuk memasukkan ke dalam tabel kumpulan hasil dari pernyataan SELECT atau prosedur tersimpan yang dieksekusi oleh pernyataan EXECUTE. Prosedur tersimpan harus mengembalikan data untuk dimasukkan ke dalam tabel. Ketika digunakan dengan pernyataan INSERT, pernyataan SELECT dapat memilih nilai dari tabel yang berbeda atau sama tempat data dimasukkan, selama tipe data dari kolom yang sesuai kompatibel.

Untuk kedua formulir, tipe data dari setiap nilai yang dimasukkan harus kompatibel dengan tipe data kolom tabel yang sesuai. Semua string dan data sementara harus diapit tanda kutip; Nilai numerik tidak perlu diapit tanda kutip.

Sisipan baris tunggal

Untuk kedua bentuk pernyataan INSERT, daftar kolom eksplisit adalah opsional. Tidak adanya daftar kolom sama dengan menentukan semua kolom tabel.

Parameter NILAI DEFAULT menyisipkan nilai default untuk semua kolom. Kolom dengan tipe data TIMESTAMP atau properti IDENTITY disisipkan secara default dengan nilai yang dihasilkan secara otomatis oleh sistem. Untuk kolom tipe data lain, nilai default non-null yang sesuai disisipkan, jika ada, atau NULL jika tidak. Jika nilai null tidak diperbolehkan untuk kolom dan tidak ada nilai default yang ditentukan untuk kolom, pernyataan INSERT gagal dan pesan yang sesuai ditampilkan.

Contoh berikut menyisipkan baris ke dalam tabel Karyawan di database SampleDb, yang menunjukkan cara menggunakan pernyataan INSERT untuk menyisipkan sejumlah kecil data ke dalam database:

GUNAKAN SampleDb; MASUKKAN KE NILAI Karyawan(34990, "Andrey", "Batonov", "d1"); MASUKKAN KE NILAI Karyawan(38640, "Aleksey", "Vasin", "d3");

Ada dua cara yang berbeda memasukkan nilai ke dalam baris baru. Pernyataan INSERT pada contoh di bawah ini secara eksplisit menggunakan kata kunci NULL dan memasukkan nilai NULL ke dalam kolom yang sesuai:

GUNAKAN SampleDb; MASUKKAN KE NILAI Karyawan(34991, "Andrey", "Batonov", NULL);

Untuk memasukkan nilai ke dalam beberapa (tetapi tidak semua) kolom tabel, Anda biasanya perlu secara eksplisit menentukan kolom tersebut. Kolom yang tidak ditentukan harus mengizinkan nilai NULL atau harus memiliki nilai default yang ditentukan untuknya.

GUNAKAN SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

Dua contoh sebelumnya adalah setara. Di tabel Karyawan, satu-satunya kolom yang mengizinkan nilai nol adalah kolom DepartmentNumber, dan untuk semua kolom lainnya, nilai ini dilarang oleh klausa NOT NULL dalam pernyataan CREATE TABLE.

Urutan nilai dalam kalimat NILAI Pernyataan INSERT mungkin berbeda dari urutan yang ditentukan dalam pernyataan CREATE TABLE. Dalam kasus seperti itu, urutannya harus sesuai dengan urutan kolom terkait yang tercantum dalam daftar kolom. Berikut ini adalah contoh penyisipan data dalam urutan yang berbeda dari aslinya:

GUNAKAN SampleDb; INSERT INTO Employee(DepartamentNumber, LastName, Id, FirstName) VALUES ("d1", "Batonov", 34993, "Andrey");

Menyisipkan Beberapa Baris

Bentuk kedua dari pernyataan INSERT menyisipkan satu atau lebih baris yang dipilih oleh subquery ke dalam tabel. Contoh di bawah ini menunjukkan cara menyisipkan baris ke dalam tabel menggunakan bentuk kedua dari pernyataan INSERT. Dalam hal ini, kueri dilakukan untuk memilih nomor dan nama departemen yang berlokasi di Moskow, dan memuat kumpulan yang dihasilkan ke dalam tabel baru yang dibuat sebelumnya.

Tabel baru MoscowDepartment yang dibuat pada contoh di atas memiliki kolom yang sama dengan tabel yang ada Departemen kecuali untuk kolom Lokasi yang hilang. Subquery dalam pernyataan INSERT memilih semua baris dalam tabel Departemen yang nilai kolom Lokasinya adalah Moskow, yang kemudian dimasukkan ke dalam tabel baru yang dibuat di awal kueri.

Contoh di bawah ini menunjukkan cara lain untuk menyisipkan baris ke dalam tabel menggunakan bentuk kedua dari pernyataan INSERT. Dalam hal ini, kueri dijalankan untuk mengambil nomor personel, nomor proyek, dan tanggal mulai proyek untuk semua karyawan dengan posisi "Manajer" yang bekerja pada proyek p2, dan kemudian memuat kumpulan yang dihasilkan ke dalam tabel baru yang dibuat di awal dari kueri:

GUNAKAN SampleDb; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR(4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam(EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Manager";

Sebelum menyisipkan baris menggunakan pernyataan INSERT, tabel MoscowDepartment dan ManagerTeam (dalam contoh di atas) kosong. Jika tabel sudah ada dan berisi baris data, maka baris baru akan ditambahkan ke dalamnya.