SQL DELETE

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” :

idnomprenomdate_inscription
1BazinDaniel2012-02-13
2FavreConstantin2012-04-03
3ClercGuillaume2012-04-12
4RicardRosemonde2012-06-24
5MartinNatalie2012-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 :

idnomprenomdate_inscription
2FavreConstantin2012-04-03
3ClercGuillaume2012-04-12
4RicardRosemonde2012-06-24
5MartinNatalie2012-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 :

idnomprenomdate_inscription
3ClercGuillaume2012-04-12
4RicardRosemonde2012-06-24
5MartinNatalie2012-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.

Partager