Lompati ke konten utama
Modul 8 · Pelajaran 2 dari 430/57 dalam kursus~10 min
Pelajaran modul (2/4)

Memperbarui dan menghapus: UPDATE dan DELETE

UPDATE mengubah baris yang ada; DELETE menghapusnya. Keduanya berbagi aturan emas yang sama dan mendasar: klausa WHERE menentukan baris mana untuk menyentuh. Melupakannya berarti mengubah/menghapus seluruh tabel.

MEMPERBARUI

SQL
UPDATE tabella
SET    colonna1 = nuovo_valore,
       colonna2 = altra_espressione
WHERE  condizione;

Contoh:

SQL
-- Aumenta del 10% i prezzi di tutti i prodotti della categoria 5 (Computer):
UPDATE products
SET    price = price * 1.10
WHERE  category_id = 5;

-- Aggiorna due colonne contemporaneamente:
UPDATE orders
SET    status     = 'shipped',
       shipped_at = NOW()
WHERE  id = 12;

SET col = espressione: ekspresi dapat mereferensikan arus baris nilai (price * 1.10), dan juga dapat menggunakan NOW(), NULL, atau sub-kueri.

MENGHAPUS

SQL
DELETE FROM tabella
WHERE  condizione;

Contoh:

SQL
-- Cancella tutte le recensioni con rating < 3:
DELETE FROM reviews
WHERE  rating < 3;

-- Cancella un ordine specifico:
DELETE FROM orders WHERE id = 999;

KEMBALI ke sini juga

Seperti INSERT, UPDATE dan DELETE juga menerima RETURNING jadi tahukah Anda apa yang mereka lakukan:

SQL
DELETE FROM reviews
WHERE  rating < 3
RETURNING id, customer_id, rating;

Berguna untuk memasukkan satu gambar apa yang telah dihapus/dimodifikasi.

Kunci asing dan penghapusan

Mencoba menghapus baris yang direferensikan oleh tabel lain melalui kunci asing menghasilkan kesalahan:

SQL
DELETE FROM customers WHERE id = 1;
-- ERROR: update or delete on table "customers" violates foreign key constraint
-- on table "orders"

Solusi: hapus baris anak terlebih dahulu, atau tentukan FK dengan ON DELETE CASCADE saat Anda membuat tabel (kami akan membahasnya di pelajaran DDL berikutnya).

Giliranmu

Latihan#sql.m8.l2.e1
Upaya: 0Memuat…

Kenaikan sebesar 10% harga setiap produk pada kategori 5 (Komputer). Pernyataan UPDATE tunggal.

Memuat editor…
Tunjukkan petunjuk

Ekspresi di sebelah kanan SET dapat merujuk pada kolom itu sendiri: harga * 1,10.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#sql.m8.l2.e2
Upaya: 0Memuat…

Hapus setiap ulasan dengan peringkat lebih rendah dari 3 (ulasan sangat negatif).

Memuat editor…
Tunjukkan petunjuk

DIMANA peringkat < 3.

Solusi tersedia setelah 3 upaya