Passer au contenu principal
eLearner.app
Module 8 · Leçon 2 sur 430/57 dans le cours~10 min
Leçons du module (2/4)

Mettre à jour et supprimer : UPDATE et DELETE

UPDATE modifie les lignes existantes ; DELETE les supprime. Tous deux partagent le même règle d'or fondamentale : la clause WHERE décide quelles lignes toucher. L'oublier signifie modifier/supprimer tout le tableau.

MISE À JOUR

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

Exemples :

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 : l'expression peut référencer le courant de la ligne valeurs (price * 1.10), et peut également utiliser NOW(), NULL ou sous-requêtes.

SUPPRIMER

SQL
DELETE FROM tabella
WHERE  condizione;

Exemples :

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

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

RETOUR ici aussi

Comme INSERT, UPDATE et DELETE acceptent également RETURNING donc vous savez sur quoi ils ont agi :

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

Utile pour enregistrer d'un seul coup ce qui a été supprimé/modifié.

Clés étrangères et suppression

Essayer de supprimer une ligne référencée par une autre table via une clé étrangère produit une erreur :

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

Solutions : supprimez d'abord les lignes enfants ou définissez le FK avec ON DELETE CASCADE lorsque vous créez la table (nous en parlerons dans le prochaine leçon DDL).

A ton tour

Exercice#sql.m8.l2.e1
Tentatives : 0Chargement…

Augmentez de 10 % le prix de chaque produit de la catégorie 5 (Ordinateur). Une seule instruction UPDATE.

Chargement de l'éditeur…
Afficher l'indice

L'expression à droite de SET peut faire référence à la colonne elle-même : prix * 1,10.

Solution disponible après 3 tentatives

Exercice de révision

Exercice#sql.m8.l2.e2
Tentatives : 0Chargement…

Supprimez tous les avis dont la note est inférieure à 3 (avis très négatifs).

Chargement de l'éditeur…
Afficher l'indice

OÙ note < 3.

Solution disponible après 3 tentatives