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_student | last_name | first_name | average | id_activity | address |
|---|---|---|---|---|---|
| 1 | Luca | Andro | 12.50 | 4 | 89 Oak Ave |
| 2 | Moricio | Jim | 11.47 | 1 | 148 Elm St |
| 3 | Daly | Spenxief | 08.95 | 3 | Mercer St |
| 4 | Patricia | Rossiny | 14.75 | 3 | NY 10019 Bld |
| 5 | Miller | Lineroz | 17.80 | 1 | 60w 57th St |
| 6 | Hines | Mark | 10.25 | 2 | 432 Park Ave |
| 7 | Salvador | Bertrand | 17.02 | 1 | 31 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_student | last_name | first_name | average | id_activity | address |
|---|---|---|---|---|---|
| 1 | Luca | Andro | 12.50 | 4 | 89 Oak Ave |
| 2 | Moricio | Jim | 11.47 | 1 | 148 Elm St |
| 4 | Patricia | Rossiny | 14.75 | 3 | NY 10019 Bld |
| 5 | Miller | Lineroz | 17.80 | 1 | 60w 57th St |
| 6 | Hines | Mark | 10.25 | 2 | 432 Park Ave |
| 7 | Salvador | Bertrand | 17.02 | 1 | 31 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_student | last_name | first_name | average | id_activity | address |
|---|---|---|---|---|---|
| 5 | Miller | Lineroz | 17.80 | 1 | 60w 57th St |
| 7 | Salvador | Bertrand | 17.02 | 1 | 31 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_student | last_name | first_name | average | id_activity | address |
|---|
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_student | last_name | first_name | average | id_activity | address |
|---|---|---|---|---|---|
| 1 | Luca | Andro | 12.50 | 4 | 89 Oak Ave |
| 2 | Moricio | Jim | 11.47 | 1 | 148 Elm St |
| 3 | Daly | Spenxief | 08.95 | 3 | Mercer St |
| 4 | Patricia | Rossiny | 14.75 | 3 | NY 10019 Bld |
| 5 | Miller | Lineroz | 17.80 | 1 | 60w 57th St |
| 6 | Hines | Mark | 10.25 | 2 | 432 Park Ave |
| 7 | Salvador | Bertrand | 17.02 | 1 | 31 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_student | last_name | first_name | average | id_activity | address |
|---|
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.
