Maybaygiare.org

Blog Network

Supprimer toutes les données d’une table MySQL

MySQL est la base de données open source la plus populaire au monde, reconnue pour sa rapidité et sa fiabilité. Cet article explique comment supprimer toutes les données d’une table de base de données MySQL et comment cela affecte les champs incrémentaux automatiques.

Supprimer et Tronquer

Il existe deux façons de supprimer toutes les données d’une table de base de données MySQL.

TRUNCATE TABLE tablename; Cela supprimera toutes les données de la table très rapidement. Dans MySQL, la table est en fait supprimée et recréée, d’où la vitesse de la requête. Le nombre de lignes supprimées pour les tables MyISAM renvoyées est nul ; pour INNODB, il renvoie le nombre réel supprimé.

DELETE FROM tablename;Cela supprime également toutes les données de la table, mais n’est pas aussi rapide qu’en utilisant la méthode « TRUNCATE TABLE”. Dans MySQL >=4.0, le nombre de lignes supprimées est renvoyé; dans MySQL 3.23, le nombre renvoyé est toujours nul.

Colonnes d’incrémentation automatique pour les tables MyISAM

Si vous avez une colonne de clé primaire d’incrémentation automatique dans votre table MyISAM, le résultat sera légèrement différent selon la méthode de suppression que vous utilisez. Lors de l’utilisation de la méthode « TRUNCATE TABLE”, la valeur de départ de l’incrément automatique sera réinitialisée à 1. Lorsque vous utilisez la méthode « SUPPRIMER DE”, la graine d’incrémentation automatique sera laissée comme avant (par exemple, si le champ d’incrémentation automatique du dernier enregistrement inséré était 123, l’enregistrement inséré suivant sera défini sur 124).

Notez que cela est vrai pour MySQL >= 4.0; d’après ma lecture de la page de manuel TRUNCATE dans MySQL 3.23 TRUNCATE fonctionne comme DELETE, ce qui signifierait que la graine d’incrémentation automatique n’est pas réinitialisée. Je n’ai pas actuellement de base de données 3.23 configurée pour la tester, je ne peux donc pas le confirmer.

Colonnes d’incrémentation automatique pour les tables INNODB

Pour les tables INNODB, que vous utilisiez les méthodes « TRUNCATE TABLE” ou « DELETE FROM”, le champ d’incrémentation automatique ne sera pas réinitialisé. Si vous avez inséré 5 enregistrements dans une nouvelle table, puis supprimé tous les enregistrements et inséré un autre enregistrement, le champ aura une valeur de 6, quelle que soit la méthode utilisée.

Mise à jour le 17 février 2009: J’ai écrit cet article à l’origine lorsque MySQL 4.0 était la version actuelle. Je viens de tester ce qui précède maintenant sur une table INNODB en utilisant MySQL 5.0 et l’utilisation de TRUNCATE réinitialise le champ d’incrémentation automatique à la valeur par défaut. Donc, soit le comportement a changé à un moment donné, soit j’étais incorrect en faisant la déclaration ci-dessus.

Êtes-vous vraiment sûr de vouloir supprimer toutes les données?

Avant de supprimer toutes les données d’une base de données, vous devez vous assurer que vous avez vraiment l’intention de supprimer toutes les données. Il faut souvent d’abord ”SÉLECTIONNER* À PARTIR DU nom de la table » ou ”SÉLECTIONNER LE NOMBRE (*) À partir DU nom de la table » avant de le faire pour vérifier qu’il est vraiment sûr de supprimer toutes les données. Peut-être que vous voulez vraiment faire quelque chose comme « SUPPRIMER DU nom de table OÙ foo = ‘bar’” à la place.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.