Adloun

mathématiques appliquées (ECG 2e année) · Chapitre 13 · Application directe du cours

Supprimer, avec et sans condition

Bases de données et travaux pratiques · Modifier une table · niveau 1 (application)

É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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre