Direct naar de hoofdinhoud
Module 8 · Les 2 van 430/57 in de cursus~10 min
Modulelessen (2/4)

Bijwerken en verwijderen: UPDATE en DELETE

UPDATE wijzigt bestaande rijen; DELETE verwijdert ze. Beiden delen de dezelfde fundamentele gouden regel: de clausule WHERE bepaalt welke rijen aanraken. Als u dit vergeet, moet u de hele tabel wijzigen/verwijderen.

UPDATE

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

Voorbeelden:

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: de expressie kan verwijzen naar de huidige rij waarden (price * 1.10), en kunnen ook NOW(), NULL of subquery's.

VERWIJDEREN

SQL
DELETE FROM tabella
WHERE  condizione;

Voorbeelden:

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

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

Ook hier TERUG

Net als INSERT, accepteren UPDATE en DELETE ook RETURNING, zodat je het weet waar ze mee aan de slag zijn gegaan:

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

Handig om in één keer in te loggen wat er verwijderd/aangepast is.

Buitenlandse sleutels en verwijdering

Er wordt geprobeerd een rij te verwijderen waarnaar wordt verwezen door een andere tabel via een externe sleutel levert een fout op:

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

Oplossingen: verwijder eerst de onderliggende rijen of definieer de FK met ON DELETE CASCADE wanneer u de tabel maakt (we behandelen dit in de volgende DDL-les).

Jouw beurt

Oefening#sql.m8.l2.e1
Pogingen: 0Laden…

Verhoog de prijs van elk product in categorie 5 (computer) met 10%. Eén enkele UPDATE-verklaring.

Editor laden…
Toon hint

De uitdrukking rechts van SET kan verwijzen naar de kolom zelf: prijs * 1,10.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#sql.m8.l2.e2
Pogingen: 0Laden…

Verwijder elke recensie met een beoordeling lager dan 3 (zeer negatieve recensies).

Editor laden…
Toon hint

WAAR beoordeling < 3.

Oplossing beschikbaar na 3 pogingen