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.

  • 🇧🇷 Déclaration fondamentale : DELETE FROM `table_name` [WHERE condition] supprime des lignes entières et renvoie le nombre de lignes supprimées.
  • ⚠️ Omission OÙ : Omettre la clause WHERE supprime toutes les lignes de la table ; il faut donc toujours filtrer avant d’exécuter la requête.
  • (I.e. TargetSuppression de l'éditeur : WHERE `movie_id` = 18 supprime un enregistrement, tandis que WHERE `movie_id` IN (20,21) en supprime plusieurs en une seule instruction.
  • (I.e. Action irréversible : Les données supprimées ne peuvent pas être récupérées sans sauvegarde ; par conséquent, sauvegardez la base de données avant d'exécuter la commande DELETE.
  • (I.e. Portée au niveau de la ligne : La commande DELETE supprime uniquement les lignes entières ; la suppression de la valeur d'une seule colonne nécessite une commande UPDATE avec la valeur NULL.
  • SUPPRIMER vs TRONQUER vs Supprimer : DELETE filtre les lignes, TRUNCATE vide instantanément une table et DROP supprime la structure même de la table.

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.

FAQ

Uniquement au sein d'une transaction ouverte. Exécutez START TRANSACTION, puis DELETE, et enfin ROLLBACK pour annuler l'opération. Après une validation (COMMIT) ou avec la validation automatique activée, les lignes sont définitivement supprimées et seule une sauvegarde peut les restaurer.

Utilisez une requête DELETE multi-tables avec un INSCRIPTION, en nommant les deux tables avant le mot-clé FROM. Vous pouvez également définir la clé étrangère avec ON DELETE CASCADE afin que les lignes enfants soient automatiquement supprimées lorsque la ligne parente est supprimée.

Le mode de mise à jour sécurisée est activé par défaut dans MySQL WorkbenchIl rejette toute requête DELETE dont la clause WHERE n'utilise pas de colonne clé, empêchant ainsi les suppressions accidentelles de tables entières. Désactivez cette option dans Édition > Préférences > Éditeur SQL.

Oui. Les assistants IA traduisent une requête en langage naturel en syntaxe DELETE et peuvent expliquer la clause WHERE. Il est toujours conseillé de vérifier le filtre généré par rapport à une requête SELECT au préalable, car un modèle d'IA ne peut pas accéder à vos données en temps réel.

Non. Laissez l'IA rédiger la requête, mais exécutez-la vous-même au préalable sur une copie de sauvegarde ou de test. Une clause WHERE manquante supprime toutes les lignes, et aucun outil d'IA ne peut annuler cette action une fois la transaction validée.

Résumez cet article avec :