Bab 3 dari 6 · 20 menit
Manipulasi Data: INSERT, UPDATE, dan DELETE
Setelah tabel berhasil dibuat melalui instruksi DDL, kamu menggunakan perintah DML untuk mengelola baris data di dalamnya. Perintah utama DML terdiri atas operasi penyisipan (INSERT), pembaruan (UPDATE), dan penghapusan (DELETE).
Perintah INSERT digunakan untuk menambahkan satu atau beberapa baris data baru ke dalam tabel. Pola dasarnya mengharuskan daftar kolom disesuaikan dengan urutan dan jumlah nilai yang dipassing ke dalam klausa VALUES:
Beberapa aturan penting saat menyisipkan data:
- Nilai string teks dan nilai penanggalan wajib diapit oleh tanda kutip tunggal (
'...'). - Kolom yang bersifat
AUTO_INCREMENTtidak perlu kamu masukkan secara manual karena nilainya dikelola oleh sistem database. - Kolom yang memiliki nilai default (
DEFAULT) boleh dilewati dari daftar kolom jika kamu ingin menggunakan nilai bawaannya.
Ketika data telah berada di dalam tabel, kamu dapat memperbaruinya menggunakan perintah UPDATE atau menghapusnya menggunakan perintah DELETE. Struktur perintahnya tampak pada contoh berikut:
Klausa WHERE merupakan bagian yang paling kritis pada operasi UPDATE dan DELETE. Menjalankan UPDATE atau DELETE tanpa menyertakan klausa WHERE akan berdampak pada seluruh baris yang tersimpan di dalam tabel bersangkutan.
Untuk menghindari insiden kehilangan data, terapkan praktik mitigasi berikut:
- Selalu uji kondisi filter terlebih dahulu menggunakan perintah
SELECTdengan kondisiWHEREyang sama sebelum mengeksekusi pembaruan atau penghapusan. - Bungkus operasi kritis di dalam transaksi sehingga kamu dapat membatalkan perubahan menggunakan perintah
ROLLBACKjika terdapat kekeliruan logika.
Cek pemahaman
1. Apa yang akan terjadi jika kamu mengeksekusi perintah UPDATE tanpa menyertakan klausa WHERE?
2. Nilai data bertipe teks dan tanggal di dalam perintah SQL harus diapit oleh tanda kutip tunggal.
3. Perhatikan query berikut. Mengapa kolom id tidak dicantumkan dalam daftar kolom INSERT?
INSERT INTO produk (nama, harga, stok) VALUES ('Kopi Arabika', 85000, 40);

