Lecții din modul (2/4)
Actualizare și ștergere: UPDATE și DELETE
UPDATE modifică rândurile existente; DELETE le elimină. Ambele împărtășesc
aceeași regulă de aur, fundamentală: clauza WHERE decide ce rânduri
a atinge. A uita înseamnă a modifica/șterge întregul tabel.
UPDATE
UPDATE tabella
SET colonna1 = nuovo_valore,
colonna2 = altra_espressione
WHERE condizione;Exemple:
-- 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: expresia poate face referire la actualul rând
valori (price * 1.10) și poate utiliza, de asemenea, NOW(), NULL sau
subinterogări.
ŞTERGE
DELETE FROM tabella
WHERE condizione;Exemple:
-- Cancella tutte le recensioni con rating < 3:
DELETE FROM reviews
WHERE rating < 3;
-- Cancella un ordine specifico:
DELETE FROM orders WHERE id = 999;REVENIRE și aici
Precum INSERT, UPDATE și DELETE acceptă și RETURNING ca să știți
la ce au actionat:
DELETE FROM reviews
WHERE rating < 3
RETURNING id, customer_id, rating;Util pentru autentificarea într-o singură lovitură a ceea ce a fost șters/modificat.
Chei străine și ștergere
Încercarea de a șterge un rând la care face referire un alt tabel printr-o cheie străină produce o eroare:
DELETE FROM customers WHERE id = 1;
-- ERROR: update or delete on table "customers" violates foreign key constraint
-- on table "orders"Soluții: ștergeți mai întâi rândurile secundare sau definiți FK cu
ON DELETE CASCADE când creați tabelul (vom acoperi acest lucru în
următoarea lecție DDL).
Rândul tău
Creșteți cu 10% prețul fiecărui produs din categoria 5 (Computer). O singură declarație UPDATE.
Afișează indiciu
Expresia din dreapta SET poate face referire la coloana însăși: preț * 1,10.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Ștergeți fiecare recenzie cu o evaluare mai mică de 3 (recenzii foarte negative).
Afișează indiciu
WHERE rating < 3.
Soluție disponibilă după 3 încercări