Suppression des données : SQL DELETE et TRUNCATE

SQL DELETE

La commande DELETE est une commande SQL utilisée pour supprimer les lignes d’une table. C’est une commande dont l’action est irréversible après son usage, c’est-à-dire après l’exécution de cette commande, la récupération des données supprimées n’est plus possible à moins qu’une sauvegarde ait été faite avant. Dans le cadre d’un projet, il est donc recommandé de sauvegarder la base de données avant de l’utiliser.

Tout comme SELECT, la commande DELETE utilise la clause WHERE qui permet de filtrer les données d’une table avec précision en indiquant la ou les lignes concernées par la requête. Dans le cas où la clause WHERE est exclue de la requête DELETE, c’est toutes les données (lignes) de la table qui seront supprimées.

Cette commande a pour syntaxe

DELETE FROM nom_table WHERE condition ;

On utilise la commande DELETE pour supprimer une ligne, plusieurs lignes ou toutes les lignes d’une table.

Soit notre table student

id_studentlast_namefirst_nameaverageid_activityaddress
1LucaAndro12.50489 Oak Ave
2MoricioJim11.471148 Elm St
3DalySpenxief08.953Mercer St
4PatriciaRossiny14.753NY 10019 Bld
5MillerLineroz17.80160w 57th St
6HinesMark10.252432 Park Ave
7SalvadorBertrand17.02131 Broad Bld

 

Suppression d’une ligne d’une table

Exemple on supprime une personne de la table dont l’adresse est Mercer St.

DELETE FROM student WHERE address = ‘Mercer St’ ;

Résultat

id_studentlast_namefirst_nameaverageid_activityaddress
1LucaAndro12.50489 Oak Ave
2MoricioJim11.471148 Elm St
4PatriciaRossiny14.753NY 10019 Bld
5MillerLineroz17.80160w 57th St
6HinesMark10.252432 Park Ave
7SalvadorBertrand17.02131 Broad Bld

 

Suppression de plusieurs lignes d’une table

On va par exemple supprimer toutes les personnes de la table dont average est inférieur à 15.

DELETE FROM student WHERE average <15 ;

Résultat

id_studentlast_namefirst_nameaverageid_activityaddress
5MillerLineroz17.80160w 57th St
7SalvadorBertrand17.02131 Broad Bld

 

Suppression de toutes les lignes d’une table

On suppime toutes les données (lignes) de la table.

DELETE FROM student ;

Pour voir le résultat, nous allons utiliser la commande suivante.

SELECT * FROM student ;

Résultat

id_studentlast_namefirst_nameaverageid_activityaddress

 

On a seulement la table mais il n’y a plus de données autrement, on a une table vide.

 

SQL TRUNCATE

TRUNCATE est une commande SQL qui permet de supprimer toutes les données ou toutes les lignes d’une table.

La commande TRUNCATE est en quelque sorte une commande qui permet de réinitialiser une table y compris l’auto-incrémentation. TRUNCATE n’utilise pas la clause WHERE contrairement à DELETE. La commande DELETE sans la clause WHERE est semblable et joue à peu près le même rôle que TRUNCATE sauf que la commande DELETE ne réinitialise pas l’auto-incrémentation.

La syntaxe donne

TRUNCATE TABLE nom_table ;

Soit notre table student

id_studentlast_namefirst_nameaverageid_activityaddress
1LucaAndro12.50489 Oak Ave
2MoricioJim11.471148 Elm St
3DalySpenxief08.953Mercer St
4PatriciaRossiny14.753NY 10019 Bld
5MillerLineroz17.80160w 57th St
6HinesMark10.252432 Park Ave
7SalvadorBertrand17.02131 Broad Bld

 

Nous allons écrire une requête TRUNCATE pour vider ou supprimer toutes les personnes de cette table.

TRUNCATE TABLE student ;

Pour voir le résultat, nous allons utiliser la commande suivante

SELECT * FROM student ;

Résultat

id_studentlast_namefirst_nameaverageid_activityaddress

 

Règles de clés étrangères

Ici il s’agit des tables relationnelles ou des tables liées par des clés étrangères. Pour ce cas spécifique, l’action des commandes DELETE et TRUNCATE n’a pas d’effet sur une table référencée autrement dit une table dont la clé primaire est contenue dans d’autres tables comme clé étrangère. Les commandes DELETE et TRUNCATE ne fonctionnent pas sur une table référencée. Si un tel cas se produit, la suppression d’une ou de plusieurs lignes de la table référencée entrainera automatiquement la suppression des données correspondantes de ces lignes dans des tables de références pour maintenir l’intégrité référentielle de données.