Przejdź do głównej treści
eLearner.app
Moduł 8 · Lekcja 2 z 430/57 w kursie~10 min
Lekcje modułu (2/4)

Aktualizowanie i usuwanie: UPDATE i DELETE

UPDATE modyfikuje istniejące wiersze; DELETE usuwa je. Obaj podzielają ta sama, podstawowa, złota zasada: klauzula WHERE decyduje które wiersze dotknąć. Zapomnienie oznacza modyfikację/usunięcie całej tabeli.

AKTUALIZACJA

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

Przykłady:

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: wyrażenie może odwoływać się do bieżącego wiersza wartości (price * 1.10), a także może używać NOW(), NULL lub podzapytania.

USUWAĆ

SQL
DELETE FROM tabella
WHERE  condizione;

Przykłady:

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

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

Tutaj też POWRÓT

Podobnie jak INSERT, UPDATE i DELETE również akceptują RETURNING, więc wiesz na czym polegali:

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

Przydatne do jednorazowego logowania tego, co zostało usunięte/zmodyfikowane.

Klucze obce i usuwanie

Próba usunięcia wiersza, do którego odwołuje się inna tabela, za pomocą klucza obcego powoduje błąd:

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

Rozwiązania: najpierw usuń wiersze podrzędne lub zdefiniuj FK za pomocą ON DELETE CASCADE podczas tworzenia tabeli (omówimy to w artykule następna lekcja DDL).

Twoja kolej

Ćwiczenie#sql.m8.l2.e1
Próby: 0Ładowanie...

Zwiększ o 10% cenę każdego produktu w kategorii 5 (Komputer). Pojedyncza instrukcja UPDATE.

Ładowanie edytora...
Pokaż wskazówkę

Wyrażenie po prawej stronie SET może odnosić się do samej kolumny: cena * 1.10.

Rozwiązanie dostępne po 3 próbach

Przejrzyj ćwiczenie

Ćwiczenie#sql.m8.l2.e2
Próby: 0Ładowanie...

Usuń każdą recenzję z oceną niższą niż 3 (bardzo negatywne recenzje).

Ładowanie edytora...
Pokaż wskazówkę

GDZIE ocena < 3.

Rozwiązanie dostępne po 3 próbach