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
UPDATE tabella
SET colonna1 = nuovo_valore,
colonna2 = altra_espressione
WHERE condizione;Voorbeelden:
-- 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
DELETE FROM tabella
WHERE condizione;Voorbeelden:
-- 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:
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:
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
Verhoog de prijs van elk product in categorie 5 (computer) met 10%. Eén enkele UPDATE-verklaring.
Toon hint
De uitdrukking rechts van SET kan verwijzen naar de kolom zelf: prijs * 1,10.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Verwijder elke recensie met een beoordeling lager dan 3 (zeer negatieve recensies).
Toon hint
WAAR beoordeling < 3.
Oplossing beschikbaar na 3 pogingen