MySQL Requête DELETE : comment supprimer une ligne d'un tableau
⚡ Résumé intelligent
MySQL La requête DELETE supprime d'une table les lignes devenues inutiles et renvoie le nombre de lignes concernées. Cette ressource explique la syntaxe de DELETE, le filtrage WHERE, la suppression de plusieurs lignes avec IN, ainsi que les alternatives plus sûres TRUNCATE et DROP.

Qu'est-ce que la requête DELETE ?
Le MySQL EFFACER L'instruction DELETE permet de supprimer les lignes inutiles d'une table de base de données. Elle supprime la ligne entière et renvoie le nombre de lignes supprimées. L'instruction DELETE est particulièrement utile pour effacer les données temporaires ou obsolètes de votre base de données.
La requête DELETE dans MySQL Cette commande permet de supprimer plusieurs lignes d'une table en une seule opération. Cela s'avère avantageux lorsqu'il s'agit de supprimer un grand nombre de lignes d'une table de base de données.
Une fois une ligne supprimée, elle ne peut être récupérée. Il est donc impératif d'effectuer une sauvegarde de la base de données avant toute suppression de données, afin de pouvoir la restaurer et la consulter ultérieurement si nécessaire.
Comment supprimer une ligne dans MySQL
L'objectif de l'instruction étant clair, l'étape suivante concerne la syntaxe. Pour supprimer une ligne dans MySQL, l'instruction DELETE FROM est utilisée :
DELETE FROM `table_name` [WHERE condition];
ICI:
- SUPPRIMER DE `table_name` raconte l' MySQL serveur pour supprimer des lignes de la table nommée.
- [OÙ condition] est facultatif et sert à appliquer un filtre qui limite le nombre de lignes affectées par la requête DELETE.
Si la clause O n'est pas utilisé dans le MySQL requête DELETE, puis tous Les lignes d'un tableau donné seront supprimées.
⚠️ Attention : Exécutez d'abord le filtre en tant que requête SELECT. S'il renvoie exactement les lignes que vous souhaitez supprimer, la suppression correspondante est sans risque. La syntaxe complète est documentée dans le MySQL Manuel de la déclaration DELETE.
Exemple de MySQL Supprimer la requête
La section suivante crée un petit ensemble de données, puis en supprime des éléments.
Étape 1 : Insérer des données d’exemple
Avant d'aborder plus en détail l'instruction SQL DELETE, insérons quelques exemples de données dans la table movies.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7); INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8); INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);
L'exécution du script ci-dessus ajoute trois (3) films à la table des films. Avant d'aller plus loin, listons tous les films présents dans notre table.
SELECT * FROM `movies`;
L'exécution du script ci-dessus donne les résultats suivants. Les trois lignes nouvellement insérées sont mises en évidence.
| id_film | titre | Directeur | année_sortie | id_catégorie |
|---|---|---|---|---|
| 1 | Pirates des Caraïbes 4 | Rob Marshall | 2011 | 1 |
| 2 | Oublier Sarah Marshal | Nicolas Stoller | 2008 | 2 |
| 3 | X Men | NULL | 2008 | NULL |
| 4 | Code Nom Noir | Edgar Jimz | 2010 | NULL |
| 5 | Les petites filles à papa | NULL | 2007 | 8 |
| 6 | anges et démons | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | Jean Schultz | 2005 | 8 |
| 16 | 67% Coupable | NULL | 2012 | NULL |
| 18 | Le Dictateur | Charlie Chaplin | 1940 | 7 |
| 19 | extrait de film | Témoignages | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
Étape 2 : Supprimer une seule ligne
Supposons que la vidéothèque Myflix ne souhaite plus louer « Le Dictateur » et veuille le supprimer de sa base de données. Son identifiant étant 18, le script ci-dessous supprime cette entrée.
DELETE FROM `movies` WHERE `movie_id` = 18;
Exécuter le script ci-dessus dans MySQL Table de travail Cette opération supprime de la table le film dont l'identifiant est 18, en l'occurrence celui figurant dans la base de données Myflix.
Vérifions maintenant l'état actuel du tableau des films.
SELECT * FROM `movies`;
| id_film | titre | Directeur | année_sortie | id_catégorie |
|---|---|---|---|---|
| 1 | Pirates des Caraïbes 4 | Rob Marshall | 2011 | 1 |
| 2 | Oublier Sarah Marshal | Nicolas Stoller | 2008 | 2 |
| 3 | X Men | NULL | 2008 | NULL |
| 4 | Code Nom Noir | Edgar Jimz | 2010 | NULL |
| 5 | Les petites filles à papa | NULL | 2007 | 8 |
| 6 | anges et démons | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | Jean Schultz | 2005 | 8 |
| 16 | 67% Coupable | NULL | 2012 | NULL |
| 19 | extrait de film | Témoignages | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
NOTE:
- Le film portant l'identifiant 18 n'apparaît plus dans les résultats de la requête.
- Vous ne pouvez pas supprimer une seule colonne d'une table avec DELETE. Cette instruction supprime une ligne entière. Pour effacer un seul champ, utilisez une autre méthode. Requête de mise à jour qui attribue la valeur NULL à la colonne.
Étape 3 : Supprimer plusieurs lignes avec IN
Supposons que nous ayons une liste de films à supprimer. Plutôt que d'exécuter une requête par ligne, nous pouvons combiner la clause WHERE avec l'opérateur IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
L'exécution du script ci-dessus supprime en une seule passe les films ayant les identifiants 20 et 21 de notre table de films.
SUPPRIMER vs TRONQUER vs AJOUTER MySQL
La commande SUPPRIMER n'est pas la seule façon de supprimer des données. MySQLLes débutants ont souvent tendance à l'utiliser alors qu'une commande plus rapide serait plus appropriée ; le tableau ci-dessous compare donc les trois commandes de suppression.
| Fonctionnalité | EFFACER | TRONQUER | GOUTTE |
|---|---|---|---|
| Type de commande | DML | DDL | DDL |
| clause O | Appareils | Non pris en charge | Non pris en charge |
| Ce qui est enlevé | Lignes sélectionnées | Toutes les lignes | Structure des lignes et du tableau |
| Rollback | Possible dans une transaction | Impossible (commit implicite) | Impossible (commit implicite) |
| INCRÉMENTATION AUTOMATIQUE | Le compteur est conservé | Le compteur est réinitialisé à sa valeur initiale. | Le comptoir est retiré avec la table |
| Vitesse sur les grandes tables | Lentement (rangée par rangée) | Très rapide | Très rapide |
Utilisez la touche SUPPR lorsque vous avez besoin d'un filtre ou de la possibilité de revenir en arrière. TABLE DU TRONCAT Utilisez DROP uniquement lorsque vous souhaitez vider rapidement une table et réinitialiser son compteur AUTO_INCREMENT. Cette commande supprime la définition de la table ainsi que les données.
