14
Chapitre 14 sur 21

Supprimer des données (DELETE)

Dans un projet réel, on supprime parfois : une erreur de saisie, un test, un doublon, un compte désactivé… Avec DELETE, vous retirez des lignes d’une table. Comme UPDATE, c’est puissant : WHERE est indispensable.

DELETE : retirer une ou plusieurs lignes

DELETE supprime des lignes (enregistrements) dans une table. Attention : une fois supprimées, ces lignes ne sont plus là (sauf si vous avez une sauvegarde ou une transaction).

🗑️

Analogie : jeter une fiche

Une ligne = une fiche papier. UPDATE = “corriger la fiche”. DELETE = “jeter la fiche”.

⚠️

Le danger n°1

Un DELETE sans WHERE supprime toutes les lignes de la table. Quand on débute, on adopte la même méthode que pour UPDATE : SELECT d’abord, DELETE ensuite.

La structure de base

La syntaxe la plus classique :

DELETE FROM nom_table
WHERE condition;
🧱

DELETE FROM
Obligatoire

La table dans laquelle vous supprimez des lignes.

🎯

WHERE
Crucial

Quelles lignes supprimer (filtre).

Méthode “SAFE”

Écrire d’abord un SELECT avec le même WHERE pour vérifier la cible.

🧠

À retenir

DELETE supprime des lignes. Il ne supprime pas une colonne, et ne supprime pas la table.

Supprimer une seule ligne (le cas le plus courant)

Exemple : vous avez un film de test avec id = 99, vous voulez le retirer.

-- 1) Je vérifie la ligne ciblée
SELECT id, titre, annee
FROM films
WHERE id = 99;
-- 2) Je supprime uniquement cette ligne
DELETE FROM films
WHERE id = 99;

Pourquoi l’id est conseillé

Comme pour UPDATE, la clé primaire (souvent id) permet de cibler une ligne unique. C’est la manière la plus sûre de supprimer “une seule” ligne.

Supprimer plusieurs lignes (quand c’est voulu)

Parfois on veut supprimer un groupe de lignes : par exemple des données de test, des doublons, ou une catégorie entière. Exemple pédagogique : supprimer les films notés < 3.

-- 1) Je regarde ce que je vais supprimer
SELECT id, titre, note
FROM films
WHERE note < 3;
-- 2) Je supprime ces lignes
DELETE FROM films
WHERE note < 3;
⚠️

Point important

Une suppression groupée peut retirer beaucoup de données. Avant de valider, vérifiez combien de lignes sont concernées avec le SELECT.

DELETE n’est pas DROP : ne pas confondre

🗑️

DELETE

Supprime des lignes dans une table.

DELETE FROM films WHERE id = 5;
🏗️

DROP TABLE

Supprime la table elle-même (structure + données).

⚠️

À éviter en débutant

DROP est une commande de structure (DDL), pas une commande “données”.

🧽

TRUNCATE

Vide la table très rapidement (selon SGBD). Souvent non disponible en SQLite.

En débutant, retenez surtout DELETE.

🧠

Conclusion

DELETE = supprimer des lignes. DROP = supprimer la table. Ce n’est pas la même “gravité”.

Guide pas à pas : supprimer sans risque (méthode SAFE)

1

Écrire le SELECT de contrôle

Vous écrivez la requête qui montre exactement ce que vous allez supprimer :

SELECT *
FROM films
WHERE id = 99;

Si le résultat est correct, vous pouvez passer à DELETE.

2

Écrire le DELETE correspondant

DELETE FROM films
WHERE id = 99;

Relisez lentement : table → WHERE → valeur.

3

Re-vérifier le résultat

Rejouez le SELECT : s’il ne renvoie plus rien, la suppression a réussi.

SELECT *
FROM films
WHERE id = 99;
🧩

SAFE = SELECT → DELETE → SELECT

Exactement comme UPDATE. Cette méthode évite 90% des catastrophes en SQL.

Erreurs courantes avec DELETE

Oublier WHERE

Conséquence : tout est supprimé.

Solution : appliquer la méthode SAFE systématiquement.

“0 ligne supprimée”

Cause : le WHERE ne correspond à aucune ligne.

Solution : exécuter le SELECT de contrôle et corriger la condition.

Supprimer “par texte” et enlever trop

Cause : plusieurs lignes ont le même titre/nom.

Solution : cibler via id quand c’est possible.

Exercice pratique : nettoyage de données

Objectif : pratiquer DELETE comme dans un vrai projet (tests, nettoyage, suppression ciblée). Utilisez films ou livres.

1) Supprimer une ligne précise

Ajoutez une ligne de test puis supprimez-la avec son id.

DELETE FROM films
WHERE id = 99;

2) Supprimer des données de test

Supprimez tous les films dont le titre commence par “TEST”.

DELETE FROM films
WHERE titre LIKE 'TEST%';

3) Supprimer selon une condition

Supprimez les films notés < 3 (exemple pédagogique).

DELETE FROM films
WHERE note < 3;

Bonus : prudence

Écrivez le SELECT de contrôle correspondant à chacun des DELETE ci-dessus.

Objectif

Être capable de prévoir exactement ce que vous allez supprimer.

🧠

Auto-correction

Après chaque DELETE, rejouez le SELECT de contrôle. Si le résultat est vide, c’est que la suppression a bien eu lieu.

Récapitulatif du chapitre

Ce que vous savez faire

  • Supprimer des lignes avec DELETE FROM
  • Cibler précisément avec WHERE (indispensable)
  • Supprimer en groupe (avec prudence et un SELECT de contrôle)
  • Ne pas confondre DELETE et DROP TABLE
  • Appliquer la méthode SAFE : SELECT → DELETE → SELECT

Prochain chapitre : vous allez comprendre pourquoi une colonne id est si importante avec les clés primaires.