formations / mysql / mysql-requete-delete

Débutant
cgoupil1970 | 25-11-2023

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.

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;

Après l'exécution de la requête, la ligne correspondant à l'id 11 a bien été supprimée.


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

MySql - Requête DELETE

La commande DELETE en SQL permet de supprimer des données dans une table.

Voir le tuto

Base de données & entités

Configurer et créer une base de données. Créer des entités

Voir le tuto
Votre inscription à la newsletter a bien été prise en compte. Une erreur est survenue lors de l'inscription à la newsletter. Votre désinscription à la newsletter a bien été prise en compte. Une erreur est survenue lors de la désinscription à la newsletter.

Inscription à la newsletter

Désinscription de la newsletter