Salt la conținutul principal
Modulul 8 · Lecția 2 din 430/57 în curs~10 min
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

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

Exemple:

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: expresia poate face referire la actualul rând valori (price * 1.10) și poate utiliza, de asemenea, NOW(), NULL sau subinterogări.

ŞTERGE

SQL
DELETE FROM tabella
WHERE  condizione;

Exemple:

SQL
-- 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:

SQL
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:

SQL
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

Exercițiu#sql.m8.l2.e1
Încercări: 0Se încarcă…

Creșteți cu 10% prețul fiecărui produs din categoria 5 (Computer). O singură declarație UPDATE.

Se încarcă editorul...
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

Exercițiu#sql.m8.l2.e2
Încercări: 0Se încarcă…

Ștergeți fiecare recenzie cu o evaluare mai mică de 3 (recenzii foarte negative).

Se încarcă editorul...
Afișează indiciu

WHERE rating < 3.

Soluție disponibilă după 3 încercări