
Selamat datang di Bab 6! Setelah sebelumnya kita berhasil merancang struktur tabel yang kokoh dengan berbagai constraints di Bab 5, sekarang saatnya kita "menghidupkan" tabel-tabel tersebut dengan data nyata. Ibarat membangun sebuah lemari arsip yang sudah disekat-sekat dengan rapi, bab ini akan mengajarkan Anda bagaimana cara memasukkan dokumen ke dalamnya tanpa merusak aturan yang sudah kita buat. Kita akan mengeksplorasi perintah INSERT, mulai dari cara standar hingga teknik bulk insert yang efisien, sambil tetap memperhatikan bagaimana integrity constraints seperti Primary Key dan Foreign Key menjaga agar data yang kita masukkan tetap valid dan konsisten.
INSERT adalah perintah untuk menambahkan satu atau lebih baris data baru ke dalam sebuah tabel. Dalam konteks lifecycle database, DDL menciptakan “wadah”, dan INSERT mengisinya dengan “isi”. Tanpa INSERT, database Anda hanya berupa skema kosong yang tidak berguna. Perintah INSERT mematuhi semua aturan yang telah Anda definisikan di Bab 5: PRIMARY KEY harus unik, kolom NOT NULL tidak boleh kosong, UNIQUE constraint harus dijaga, dan FOREIGN KEY harus mereferensikan data yang ada.
INSERT INTO nama_tabel (kolom1, kolom2, kolom3)
VALUES (nilai1, nilai2, nilai3);
Struktur ini terdiri dari tiga bagian penting: kata kunci INSERT INTO yang menentukan tabel tujuan, daftar kolom yang akan diisi dalam tanda kurung, dan daftar VALUES yang merupakan nilai-nilai untuk setiap kolom.
Memasukkan satu baris data dengan menyebutkan kolom secara eksplisit adalah praktik terbaik dalam SQL. Mengapa? Karena Anda memiliki kontrol penuh atas data mana yang dimasukkan ke kolom mana, kode menjadi lebih mudah dibaca dan dipahami, dan yang terpenting, kode Anda akan tetap bekerja meski urutan kolom di tabel berubah di masa depan.
Metode ini adalah yang paling aman dan paling sering digunakan dalam praktik. Bayangkan Anda sedang berbicara dengan teman melalui telepon dan ingin memberikan alamat rumah Anda. Lebih baik Anda mengatakan “jalan Sudirman nomor 1, kota Malang” daripada hanya mengucapkan “Sudirman, 1, Malang”. Yang pertama jelas, yang kedua ambigu.
INSERT INTO nama_tabel (kolom1, kolom2, kolom3)
VALUES (nilai1, nilai2, nilai3);
Mari kita insert seorang mahasiswa baru bernama Siti M. dengan NIM 23010003. Dia adalah seorang wanita dengan IPK 3.65, tinggal di Jl. Gatot No 5, lahir pada tanggal 12 Agustus 2002, dan status aktif di kampus.
INSERT INTO mahasiswa (nim, nama_mhs, email, ipk_terakhir, jenis_kelamin, alamat, tgl_lahir, status_mhs)
VALUES ('23010003', 'Siti M.', 'siti@email.com', 3.65, 'Wanita', 'Jl. Gatot No 5', '2002-08-20', 'Aktif');


Anda bisa memasukkan data tanpa menyebutkan nama kolom, asalkan urutan nilai benar-benar sesuai dengan urutan kolom di tabel. Metode ini lebih singkat tetapi lebih berisiko. Jika di masa depan urutan kolom di tabel berubah, query lama Anda akan broken dan memberikan data di kolom yang salah.
Meskipun terlihat simpel, pada praktinya sangat tidak direkomendasikan metode ini untuk production code. Gunakan metode ini hanya ketika Anda bekerja cepat di sandbox atau development environment.
INSERT INTO nama_tabel
VALUES (nilai1, nilai2, nilai3, nilai4, ...);
Database akan berasumsi Anda memberikan nilai dalam urutan yang sama persis dengan urutan kolom di tabel. Jika urutan berubah satu pun, data akan masuk ke kolom yang salah. Misalnya, jika Anda tidak sengaja menukar urutan nama dengan email, nama akan tersimpan di kolom email dan email akan tersimpan di kolom nama. Database tidak akan memberi tahu Anda karena secara teknis tidak ada kesalahan
INSERT INTO mahasiswa
VALUES ('23010004', 'Dina A.', 'dina.a@email.com', 3.50, 'Wanita', 'Jl. Kusuma No 4', '2003-01-10', 'Aktif');