Comment supprimer toutes les tables dans MySQL
- Requête SQL pour supprimer toutes les tables
- Vider et recréer le DataFrame
- Vérification des tables supprimées
Ce tutoriel montre plusieurs façons dont un utilisateur peut déposer toutes les tables dans MySQL et donne des exemples de scripts pour le rendre possible.
La raison pour laquelle vous ne pouvez pas supprimer toutes les tables en une seule ligne de code est que dans une base de données de taille importante et bien conçue, il y aura probablement beaucoup de contraintes de clés étrangères.
Requête SQL pour supprimer toutes les tables
-
La première chose à faire est de faire en sorte que les tables déroulantes n’aient pas besoin de vérifier les contraintes des clés étrangères.
SET FOREIGN_KEY_CHECKS = 0;
-
Procédez ensuite à l’écriture d’un script pour interroger toutes les tables de votre base de données.
SELECT table_name FROM information_schema.tables WHERE table_schema = db_name;
-
Ensuite, copiez toutes les tables dans le résultat de la requête ci-dessus et supprimez-les une par une.
DROP TABLE IF EXISTS tableOne; DROP TABLE IF EXISTS tableTwo; DROP TABLE IF EXISTS tableThree; DROP TABLE IF EXISTS tableEtc;
-
Rétablissez la configuration par défaut de la vérification des clés étrangères
SET FOREIGN_KEY_CHECKS = 1;
Cette approche est possible parce que nous avons désactivé la vérification des clés étrangères au départ. Ainsi, quel que soit l’ordre dans lequel nous supprimons les tables, cela ne provoquera aucune erreur de contrainte. Assurez-vous simplement de réactiver la vérification de la clé étrangère après le script.
Vider et recréer le DataFrame
Pour que cela soit possible, vous devez vous assurer qu’outre les tables, vous êtes également prêt à supprimer les fonctions, index, rôles et autres paramètres stockés en dehors des tables puisque vous déposez l’ensemble de le DataFrame.
Pour que cela s’exécute avec succès, le rôle actuel doit avoir les privilèges drop
et create
dans le DataFrame.
DROP DATABASE database_name;
Après l’abandon, recréer le DataFrame.
CREATE DATABASE database_name;
Cette approche est très probablement la méthode la plus volatile pour supprimer toutes les tables. Elle ne convient qu’aux petites bases de données ou aux bases de données expérimentales.
Utilisation de mysqldump
pour supprimer des tables dans MySQL
mysqldump
est une commande de console attribuée à partir de MySQL. En supposant que vous avez déjà configuré MySQL dans vos variables de chemin, nous pouvons utiliser la commande pour déposer des tables dans votre base de données.
-
La première étape consiste toujours à désactiver la vérification des clés étrangères dans la console.
echo "SET FOREIGN_KEY_CHECKS = 0" > ./temp.sql
-
Procédez au vidage de le DataFrame en utilisant
mysqldump
et déposez les tablesmysqldump --add-drop-table --no-data -u rootuser -p database_name | grep 'DROP TABLE' >> ./temp.sql
-
Réactivez la vérification des clés étrangères dans la console.
echo "SET FOREIGN_KEY_CHECKS = 1;" >> ./temp.sql
-
Restaurez votre base de données à l’aide du fichier dump
mysql -u root -p db_name < ./temp.sql
Cela sera plus facile si vous connaissez les commandes de la console et si vous avez configuré MySQL dans votre variable path.
Vérification des tables supprimées
Pour vérifier si toutes les tables ont effectivement été supprimées, nous pouvons vérifier dans le DataFrame si elle produit toujours les tables avec ce script.
SHOW TABLES FROM database_name;
S’il n’y a pas de sortie, cela signifie que la requête a été exécutée avec succès et que toutes les tables SQL de cette base de données spécifique ont été supprimées.
En résumé, la raison pour laquelle vous ne pouvez pas supprimer des tables en masse directement en SQL est que les bases de données relationnelles reposent fortement sur des relations et des contraintes. Si vous étiez autorisé à supprimer des tables sans désactiver explicitement la vérification des clés étrangères, les relations, les contraintes et les configurations des clés étrangères seraient corrompues.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn