Adloun

Supprimer, avec et sans condition

Exercice supplémentaire · niveau 1 (application) · mathématiques appliquées (ECG 2e année), chapitre 13 — Bases de données et travaux pratiques · Modifier une table

Énoncé

La table produit a pour champs id, libelle et prix. Écrire la requête supprimant les produits dont le prix dépasse . Que ferait la même requête privée de sa condition ?

Corrigé

La requête.


DELETE FROM produit
WHERE prix > 1000;

Sa portée. Seules les lignes vérifiant la condition disparaissent. Si aucun produit ne coûte plus de , la requête ne supprime rien — et ce n'est pas une erreur.

Sans la condition.


DELETE FROM produit;

Cette requête vide la table entière. Toutes les lignes sont supprimées, sans confirmation, sans avertissement, et sans retour en arrière. La table continue d'exister — son schéma est intact —, mais elle ne contient plus rien.

Pourquoi c'est dangereux. Ce n'est pas une faute de syntaxe : la requête est parfaitement valide, et la base l'exécute sans broncher. C'est ce qui rend l'oubli de la clause WHERE si redoutable — rien ne le signale.

Le réflexe. Avant tout DELETE, on exécute le SELECT correspondant pour voir exactement ce que la condition atteint :


SELECT id, libelle, prix FROM produit
WHERE prix > 1000;

Si cette lecture rend les lignes attendues, alors et seulement alors on remplace SELECT ... par DELETE.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.