Soal 1Saat kamu menjalankan INSERT INTO book (title, price) VALUES ('Pengantar SQL', 1980);, apa yang terjadi pada kolom id (INTEGER PRIMARY KEY) yang tidak ada di daftar kolom?
INSERT — Menambahkan Data ke Tabel
Pelajari pernyataan SQL INSERT dari dasar. Mencakup bentuk dengan kolom dinamai, bentuk pintas tanpa kolom, dan INSERT banyak baris sekaligus — tiga pola diilustrasikan dengan tabel terpisah dan dijalankan langsung di browser kamu.
INSERT — menambahkan baris ke tabel
Untuk menambahkan baris baru ke tabel, kamu memakai pernyataan INSERT. SELECT tentang "membaca data"; INSERT adalah operasi paling dasar untuk "menyisipkan data." Pendaftaran pengguna, pencatatan pembelian, penulisan log — sebagian besar aktivitas "menyimpan sesuatu" di sebuah aplikasi terjadi melalui INSERT.
Menamai kolom dan nilai (bentuk dasar)
Bentuk yang paling umum menamai kolom dan nilai sekaligus: INSERT INTO nama_tabel (col, col, ...) VALUES (val, val, ...);. Setelah nama tabel, daftar kolom dalam tanda kurung, dan setelah VALUES, daftar nilainya dengan urutan dan jumlah yang sama.
Dalam bentuk ini, setiap kolom yang tidak ada di daftar default-nya menjadi NULL (atau DEFAULT kolom). Kalau kamu menghilangkan kolom INTEGER PRIMARY KEY, auto-numbering aktif dan integer kosong diberikan.
INSERT INTO adalah "tabel mana yang disisipi," daftar kolom dalam tanda kurung adalah "kolom mana yang diberi nilai," dan di dalam VALUES (...) adalah "nilai-nilai, dengan urutan yang sama dengan daftar kolom." Rasakan posisi dan peran masing-masing.-- Tambah 1 baris ke book (hanya title dan price)
INSERT INTO book (title, price) VALUES ('Pengantar SQL', 1980);
-- Periksa hasilnya
SELECT * FROM book;
Bagaimana dengan kolom yang dihilangkan?
Kolom yang tidak ada di daftar mendapat DEFAULT kolom (atau NULL kalau tidak ada). Untuk kolom INTEGER PRIMARY KEY, auto-numbering aktif dan integer kosong diberikan (setara dengan AUTO_INCREMENT di MySQL).
Menghilangkan daftar kolom untuk mengisi semua kolom
Bentuk lain adalah pintasan tanpa daftar kolom, mendaftar nilai untuk semua kolom secara berurutan: INSERT INTO nama_tabel VALUES (val, val, ...);. Kata kunci VALUES muncul tepat setelah nama tabel.
Kompromi untuk lebih singkatnya: kamu harus ingat urutan kolom tabel. Dan begitu ALTER TABLE menambah kolom kemudian, bentuk ini rusak karena jumlah nilai tidak lagi cocok — jadi pakai hanya untuk situasi terbatas seperti memuat data sementara atau skrip sekali pakai.
-- Tambah 1 baris ke task (menghilangkan daftar kolom)
INSERT INTO task VALUES ('Bersih-bersih', 0);
-- Periksa hasilnya
SELECT * FROM task;
Bentuk tanpa kolom rusak di bawah ALTER TABLE
INSERT INTO task VALUES ('Bersih-bersih', 0); bekerja sekarang karena tabelnya punya 2 kolom. Kalau kamu nanti menjalankan ALTER TABLE task ADD COLUMN due_on TEXT;, setiap kolom butuh nilai (3 nilai), dan INSERT ini rusak dengan error ketidakcocokan jumlah nilai.
Untuk aplikasi produksi dan skrip, lebih baik pakai bentuk kolom dinamai (bentuk dasar) — saat definisi tabel berkembang, kamu tidak perlu menulis ulang INSERT-mu. Simpan bentuk pintasan untuk kasus terbatas seperti "data sementara dengan skema tetap" atau "skrip sekali pakai."
Menambah banyak baris sekaligus
Satu pernyataan INSERT bisa menambah banyak baris sekaligus. Cukup daftar beberapa tuple `(val, val, ...)` dipisah koma setelah VALUES — setiap pasang tanda kurung adalah satu baris.
Ada dua alasan untuk melakukan ini. Pertama kode lebih sedikit, dan kedua hanya butuh satu round-trip ke database, yang lebih cepat daripada menjalankan INSERT per baris. Pemuatan massal dari file CSV atau log adalah kasus penggunaan standar untuk bentuk ini.
-- Tambah 3 baris ke product sekaligus
INSERT INTO product (name, price) VALUES
('Apel', 150),
('Pisang', 100),
('Jeruk', 200);
-- Periksa hasilnya
SELECT * FROM product;
Saat bentuk tanpa kolom rusak — ketika ALTER TABLE menambah kolom
Callout sebelumnya bilang "bentuk tanpa kolom rusak di bawah ALTER TABLE." Melihatnya rusak sekali memberimu acuan konkret untuk kembali saat kamu memutuskan apakah pakai pintasan di produksi.
Untuk latihan terakhir artikel ini, buat tabel coretan `task_v2`, tambah kolom dengan ALTER TABLE, dan coba INSERT tanpa kolom yang sama sebelum dan sesudah. INSERT yang sebelumnya bekerja gagal dengan error "jumlah nilai tidak cocok" begitu kolom ditambahkan.
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Mana dari berikut ini yang menggambarkan bentuk tanpa kolom, INSERT INTO nama_tabel VALUES (...), dengan benar?
Soal 3Mana cara yang benar menulis INSERT banyak baris?