UPDATE: Mengubah Data (dan Bahaya Lupa WHERE)
Mengubah isi data dengan UPDATE ... SET ... WHERE, mengubah banyak kolom sekaligus, memakai rumus, dan kebiasaan aman sebelum mengubah data.
Bentuk dasar UPDATE
UPDATE nama_tabel
SET kolom1 = nilai1, kolom2 = nilai2
WHERE kondisi;
Contoh: harga Americano naik jadi 16.000.
UPDATE produk
SET harga = 16000
WHERE nama = 'Americano';
Peringatan paling penting di bab ini: WHERE menentukan baris mana yang diubah. Kalau lupa menulisnya, SEMUA baris berubah. Bayangkan UPDATE produk SET harga = 16000; membuat setiap produk harganya 16.000 — dari tumbler sampai es teh. Ini salah satu "kecelakaan database" paling klasik di dunia kerja.
Mengubah banyak kolom sekaligus
UPDATE produk
SET harga = 17000, stok = 45
WHERE id = 3;
Memakai rumus: nilai baru berdasarkan nilai lama
UPDATE produk SET stok = stok - 1 WHERE id = 1; -- stok berkurang 1
UPDATE produk SET harga = harga + 2000 WHERE kategori_id = 1; -- naik 2000 untuk semua minuman
UPDATE produk SET harga = ROUND(harga * 1.1) WHERE kategori_id = 3; -- naik 10%
Bagian kanan tanda = dihitung dulu memakai nilai lama, baru disimpan. Itu sebabnya stok = stok - 1 tidak membingungkan MySQL.
Kebiasaan aman sebelum UPDATE
- Tulis SELECT dulu dengan WHERE yang sama untuk melihat baris mana yang akan kena:
SELECT * FROM produk WHERE kategori_id = 1; - Kalau hasilnya sudah benar, ganti
SELECT *menjadiUPDATE ... SET ...dengan WHERE yang sama persis. - Untuk perubahan penting, bungkus dalam transaksi (dipelajari nanti) agar bisa di-
ROLLBACK. - Lihat pesan hasilnya:
Rows matched: 4 Changed: 4. Jika angkanya tidak sesuai dugaanmu, curiga ada yang salah.
Mode aman klien MySQL: opsi mysql --safe-updates (atau --i-am-a-dummy π) menolak UPDATE/DELETE tanpa WHERE yang memakai kunci. Cocok untuk pemula dan untuk akun yang dipakai harian.