Aller au contenu
Modification (DML)

DELETE

DELETE retire des lignes d'une table tout en conservant sa structure. On l'utilise pour purger des données obsolètes ou annulées, toujours avec un WHERE vérifié au préalable.

  • supprimer
  • effacer
  • DML
  • TRUNCATE

Syntaxe

Modèle
DELETE FROM tableWHERE condition;

Exemple

Exemple concret
DELETE FROM ordersWHERE status = 'annulé'  AND id NOT IN (SELECT order_id FROM order_items);SELECT status, COUNT(*) AS nbFROM ordersGROUP BY statusORDER BY status;-- Jeu de données : boutique-- Purge des commandes annulées qui n'ont aucune ligne de commande-- Résultat attendu :-- en cours | 1-- livré | 3

À retenir

  1. DELETE FROM table sans WHERE vide la table mais la garde, avec ses index et contraintes. DROP TABLE, lui, supprime la table elle-même.
  2. Piège : supprimer une ligne parente (une commande) laisse ses lignes enfants (order_items) orphelines si aucune contrainte ne protège la relation. Activez les clés étrangères ou supprimez les enfants d'abord.
  3. Avec PRAGMA foreign_keys = ON, l'action ON DELETE de la clé étrangère s'applique : CASCADE supprime aussi les enfants, RESTRICT bloque la suppression.
  4. SQLite n'a pas de TRUNCATE : DELETE FROM table sans WHERE est optimisé pour jouer ce rôle. PostgreSQL, MySQL et SQL Server proposent TRUNCATE TABLE, plus rapide mais non filtrable.

Voir aussi