La commande DELETE en SQL permet de supprimer des lignes dans une table. En utilisant cette commande associé à WHERE il est possible de sélectionner les lignes concernées qui seront supprimées.
Attention
Avant d’essayer de supprimer des lignes, il est recommandé d’effectuer une sauvegarde de la base de données, ou tout du moins de la table concernée par la suppression. Ainsi, s’il y a une mauvaise manipulation il est toujours possible de restaurer les données.
Syntaxe
La syntaxe pour supprimer des lignes est la suivante :
DELETE FROM `table` WHERE condition
Attention : s’il n’y a pas de condition WHERE alors toutes les lignes seront supprimées et la table sera alors vide.
Exemple
Imaginons une table “utilisateur” qui contient des informations sur les utilisateurs d’une application.
Table “utilisateur” :
id | nom | prenom | date_inscription |
---|---|---|---|
1 | Bazin | Daniel | 2012-02-13 |
2 | Favre | Constantin | 2012-04-03 |
3 | Clerc | Guillaume | 2012-04-12 |
4 | Ricard | Rosemonde | 2012-06-24 |
5 | Martin | Natalie | 2012-07-02 |
Supprimer une ligne
Il est possible de supprimer une ligne en effectuant la requête SQL suivante :
DELETE FROM `utilisateur` WHERE `id` = 1
Une fois cette requête effectuée, la table contiendra les données suivantes :
id | nom | prenom | date_inscription |
---|---|---|---|
2 | Favre | Constantin | 2012-04-03 |
3 | Clerc | Guillaume | 2012-04-12 |
4 | Ricard | Rosemonde | 2012-06-24 |
5 | Martin | Natalie | 2012-07-02 |
Supprimer plusieurs lignes
Si l’ont souhaite supprimer les utilisateurs qui se sont inscrit avant le 10/04/2012, il va falloir effectuer la requête suivante :
DELETE FROM `utilisateur` WHERE `date_inscription` < '2012-04-10'
La requête permettra alors de supprimer les utilisateurs “Daniel” et “Constantin”. La table contiendra alors les données suivantes :
id | nom | prenom | date_inscription |
---|---|---|---|
3 | Clerc | Guillaume | 2012-04-12 |
4 | Ricard | Rosemonde | 2012-06-24 |
5 | Martin | Natalie | 2012-07-02 |
Il ne faut pas oublier qu’il est possible d’utiliser d’autres conditions pour sélectionner les lignes à supprimer.
Supprimer toutes les données
Pour supprimer toutes les lignes d’une table il convient d’utiliser la commande DELETE sans utiliser de clause conditionnelle.
DELETE FROM `utilisateur`
Supprimer toutes les données : DELETE ou TRUNCATE
Pour supprimer toutes les lignes d’une table, il est aussi possible d’utiliser la commande TRUNCATE, de la façon suivante :
TRUNCATE TABLE `utilisateur`
Cette requête est similaire. La différence majeure étant que la commande TRUNCATE va ré-initialiser l’auto-incrémente s’il y en a un. Tandis que la commande DELETE ne ré-initialise pas l’auto-incrément.