33 Voix

MySQL: Supprimer Données de Table - Différence entre TRUNCATE, DELETE et DROP

Tutoriel de Stefan Trost | Dernière mise à jour le 14/04/2024 | Créé le 30/11/2022

Dans ce petit tutoriel, nous voulons avoir un aperçu de plus près de la différence entre les commandes MySQL TRUNCATE, DELETE et DROP. Les trois commandes ont à voir avec la suppression des données des tables ou la suppression de tables entières.

Le tutoriel est divisé en les sections suivantes:

DELETE: Suppression des enregistrements individuels

La commande la plus connue des toris commandes est DELETE. Avec DELETE, il est possible de supprimer des enregistrements individuels d'une table. Voici un exemple d'utilisation de cette commande:

DELETE FROM tab WHERE id = 2;
DELETE FROM tab WHERE id > 7 AND id < 30;
DELETE FROM tab WHERE nom = 'Anna';
DELETE FROM tab WHERE nom LIKE '%abc%';

Ce sont quatre instructions SQL que chacun supprime les enregistrements du tableau "tab" en fonction de certains critères. La première commande supprime l'enregistrement avec l'ID 2, la deuxième commande tous les enregistrements qui ont un ID supérieur à 7 et inférieur à 30 (IDs de 8 à 29), et la troisième commande supprime l'enregistrement ou les enregistrements dans lesquels la colonne "nom" est égale à "Anna" respectivement ne contient que "Anna". Après tout, la dernière commande supprime tous les enregistrements dans lesquels la colonne "nom" contient la chaîne "abc".

Comme vous pouvez le voir, à ce stade, nous pouvons définir n'importe quel critère de suppression d'enregistrements de données, de la même manière que nous pouvons définir la sélection dans la partie WHERE d'une requête SELECT.

Suppression de tous les enregistrements d'une table

Dans les exemples de commande DELETE que nous avons examinés dans la dernière section, nous avons décrit en détail quels enregistrements devraient être supprimés derrière WHERE. Mais nous pouvons également omettre la déclaration WHERE:

DELETE FROM tab;

Cette instruction n'a aucune limitation selon quels critères les enregistrements doivent être supprimés. Par conséquent, tous les enregistrements de la table seront perdus irresibles. La table entière est vide après cette requête.

Aussi avec la commande TRUNCATE, tous les enregistrements d'une table sont supprimés. Vous pouvez utiliser cette commande de la manière suivante:

TRUNCATE TABLE tab;

Cette commande supprime également toutes les données de façon permanente du tableau "tab" et, par conséquent, l'effet de cette instruction sur les enregistrements est identique à "DELETE FROM tab". Cependant, la mise en œuvre technique est différente:

Différence entre TRUNCATE et DELETE

Pendant la suppression avec DELETE, chaque enregistrement de la table sera supprimé individuellement, tandis que TRUNCATE a une approche différente: TRUNCATE supprime d'abord le tableau entier, y compris les définitions des colonnes et alors crée un nouveau tableau vide identique sans données.

En conséquence, TRUNCATE est beaucoup plus rapide que l'instruction DELETE. En outre, dans la nature des choses réside comment les deux commandes de la suppression traitent les colonnes AUTO_INCREMENT. TRUNCATE réinitialise la valeur AUTO_INCREMENT à 1, car l'ensemble du tableau est reconstruit, tandis que DELETE ne fait aucune réinitialisation et la colonne sera en comptant là où elle a été arrêtée. Par conséquent, si vous souhaitez conserver votre valeur AUTO_INCREMENT, vous devez compter - malgré les performances assez mauvaises - sur DELETE ou vous devez enregistrer la valeur avant le processus de suppression afin de la définir manuellement par la suite.

Suppression d'une table complète avec DROP

La dernière commande que nous examinerons s'appelle DROP:

DROP TABLE tab;
DROP TABLE tab1, tab2;
DROP TABLE IF EXISTS tab1, tab2;

DROP élimine toute la table, y compris toutes les données et les définitions des colonnes de la table. Ainsi, après avoir effectué une commande DROP, toute la table aura disparu et ne peut pas être récupérée. En revanche, DELETE et TRUNCATE ne suppriment que les données du tableau, tandis que les définitions du tableau restent.

Vous pouvez utiliser DROP comme indiqué dans l'exemple. Avec la première ligne, l'ensemble du tableau "tab" est supprimé, avec la deuxième ligne, vous pouvez voir comment supprimer plusieurs tables simultanément dans une seule instruction. Dans la troisième ligne, "IF EXISTS" (si existe) est ajouté. Cette amélioration garantit qu'aucun message d'erreur n'apparaît lorsque vous essayez de supprimer un tableau qui n'existe pas.

Avertissement

Vous devez gérer les commandes DELETE, TRUNCATE et DROP très attentivement, car les enregistrements ou toute la table ne peuvent pas être restaurés après la suppression. Veuillez vous assurer que vous n'avez plus besoin des données et faire toujours une sauvegarde de votre base de données avant d'utiliser les commandes comme précaution.

Sinon, la seule chose que vous pouvez faire est de créer une nouvelle colonne à nouveau.

RépondrePositifNégatif

Sur l’Auteur

AvatarVous pouvez trouver des logiciels de Stefan Trost sur fr.sttmedia.com. Avez-vous besoin d'un logiciel personnalisé selon vos propres besoins? Écrivez-nous: fr.sttmedia.com/contact
Voir Profil

 

Sujets Connexes

MySQL: Sauts de Ligne dans MySQL

Conseil | 0 Commentaires

VirtualBox: Changer la Date et l'Heure

Tutoriel | 10 Commentaires

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.