formations / mysql / mysql-requete-delete
MySql - Requête DELETE
La commande DELETE en SQL permet de supprimer des données dans une table. Elle est très utile pour supprimer des données obsolètes, des données erronées ou des données qui ne sont plus nécessaires.
Supprimer toutes les données
Il est très simple de supprimer une toutes les données d'une table à l'aide de la commande DELETE de SQL. L'exemple ci-dessous supprime toutes les données de la table nommée utilisateurs. Les suppressions que nous allons effectuer sont des suppressions "physiques" ce qui signifie que les données sont supprimées de la table et ne sont pas récupérables.
DELETE FROM utilisateurs
Après l'exécution de la requête, si on vérifie dans l'onglet parcourir de PhpMyAdmin on peut constater que la table est desormais.vide.
Supprimer une donnée spécifique
La suppression d'une ligne de données spécifique est simple, il suffit en effet de rajouter la clause WHERE au script SQL précédent. Pour tester cela nous allons rajouter de nouvelles entrées dans la table que nous venons de vider à l'aide du script ci-dessous.
INSERT INTO utilisateurs
(nom, prenom, email, password, age, badges, points)
VALUES
("Paien", "Houde", "paienhoude@teleworm.us", "password", 78, 3, 30),
("Anouk", "Lachapelle", "anouklachapelle@dayrep.com", "password", 38, 0, 0),
(NULL, NULL, "Ttimotheecharlebois@jourrapide.com", "password", 29, 5, 50);
On peut voir dans la capture que la table après l'exécution du script à bien de nouveau trois lignes de données.
Lorsque l'on supprime les données d'un table, cela ne remet pas les id à 1, l'incrémentation continue la ou elle en était.
Maintenant que nous avons de nouveau des données, nous allons pouvoir supprimer la ligne 2 (l'id 11). Comme évoqué plus haut nous utilisons le script précédent avec la clause WHERE.
DELETE FROM utilisateurs WHERE id=11;
Supprimer une ligne ne change pas les id des autres lignes.
La suppression logique
Pour supprimer des données de manière "logique" nous allons tout simplement ajouter une colone nommée "is_deleted" à la table des utilisateurs.
ALTER TABLE utilisateurs ADD is_deleted TINYINT DEFAULT 0;
Maintenant notre table est dotée d'une colonne nommée "is_deleted" contenant pour toutes les lignes la valeur 0. Ce 0 correspond à la valeur booléenne "false" de sorte que de manière "logique" aucune ligne n'est supprimée.
Pour supprimer une ligne il va nous suffire de passer la valeur à 1 (valeur booléenne true) qui signifiera que la ligne est "logiquement" supprimée. Pour cela il nous faudra alors ne pas utiliser la commande SQL DELETE, mais UPDATE comme l'illustre le script suivant :
UPDATE utilisateurs SET is_deleted=1 WHERE id=12;
Pour mettre à jour toutes les lignes il suffit d'utiliser le script sans la clause WHERE comme vu dans le tutoriel sur le commande SQL de requête UPDATE.
Pour prendre en charge cette suppression logique, il faut alors utiliser des requêtes de sélection incluant la clause WHERE sur la valeur de la colonne nommée "is_deleted", comme ci-dessous :
SELECT * FROM utilisateurs WHERE is_deleted=0;
Après ce tour d'horizon des requêtes SQL du CRUD, progressons dans les requêtes SQL notamment à travers l'utilisation des funtions SQL et des jointures de tables, vous devez être abonné pour accéder à ces tutoriels.
Tutos du jour