Comment supprimer toutes les tables dans MySQL

Rayven Esplanada 30 janvier 2023
  1. Requête SQL pour supprimer toutes les tables
  2. Vider et recréer le DataFrame
  3. Vérification des tables supprimées
Comment supprimer toutes les tables dans MySQL

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 tables
    mysqldump --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.

Rayven Esplanada avatar Rayven Esplanada avatar

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

Article connexe - MySQL Table