Wie man alle Tabellen in MySQL fallen lässt

Rayven Esplanada 30 Januar 2023
  1. SQL-Abfrage, um alle Tabellen zu löschen
  2. Die Datenbank leeren und neu erstellen
  3. Verifizierung gelöschter Tabellen
Wie man alle Tabellen in MySQL fallen lässt

Dieses Tutorial demonstriert mehrere Möglichkeiten, wie ein Benutzer alle Tabellen in MySQL ablegen kann, und listet Beispielskripte auf, um dies zu ermöglichen.

Der Grund, warum Sie nicht alle Tabellen in einer einzigen Zeile Code löschen können, liegt darin, dass es in einer großen und gut entworfenen Datenbank wahrscheinlich viele Fremdschlüssel-Einschränkungen gibt.

SQL-Abfrage, um alle Tabellen zu löschen

  • Zuerst muss man es so einrichten, dass das Löschen von Tabellen keine Fremdschlüsselbeschränkungen prüfen muss.
    SET FOREIGN_KEY_CHECKS = 0;
    
  • Fahren Sie dann fort, ein Skript zu schreiben, um alle Tabellen innerhalb Ihrer Datenbank abzufragen.
    SELECT
        table_name
    FROM
        information_schema.tables
    WHERE
        table_schema = db_name;
    
  • Kopieren Sie danach alle Tabellen im Ergebnis der obigen Abfrage und löschen Sie sie nacheinander.
    DROP TABLE IF EXISTS tableOne;
    DROP TABLE IF EXISTS tableTwo;
    DROP TABLE IF EXISTS tableThree;
    DROP TABLE IF EXISTS tableEtc;
    
  • Setzen Sie die Konfiguration der Fremdschlüsselprüfung auf die Standardeinstellung zurück.
    SET FOREIGN_KEY_CHECKS = 1;
    

Dieser Ansatz ist möglich, weil wir die Fremdschlüsselprüfung zu Beginn deaktiviert haben. Egal, in welcher Reihenfolge wir die Tabellen löschen, es wird also kein Constraint-Fehler auftreten. Stellen Sie nur sicher, dass Sie die Fremdschlüsselprüfung nach dem Skript wieder aktivieren.

Die Datenbank leeren und neu erstellen

Damit dies möglich ist, müssen Sie sicherstellen, dass Sie außer Tabellen auch bereit sind, gespeicherte Funktionen, Indizes, Rollen und andere Einstellungen außer Tabellen zu löschen, da Sie die gesamte Datenbank löschen.

Damit dies erfolgreich durchgeführt werden kann, muss die aktuelle Rolle Löschen und Erzeugen von Privilegien in der Datenbank haben.

DROP DATABASE database_name;

Nach dem Drop muss die Datenbank neu erstellt werden.

CREATE DATABASE database_name;

Dieser Ansatz ist höchstwahrscheinlich die flüchtigste Methode, alle Tabellen zu löschen. Dies ist nur für kleine oder experimentelle Datenbanken geeignet.

Verwendung von mysqldump zum Löschen von Tabellen in MySQL

mysqldump ist ein Konsolenbefehl, der von MySQL zugeschrieben wird. Angenommen, Sie haben MySQL bereits in Ihren Pfadvariablen eingerichtet, können wir den Befehl benutzen, um Tabellen innerhalb Ihrer Datenbank zu löschen.

  • Der erste Schritt ist immer noch, die Fremdschlüsselprüfung in der Konsole zu deaktivieren.
    echo "SET FOREIGN_KEY_CHECKS = 0" > ./temp.sql
    
  • Fahren Sie fort, die Datenbank mit mysqldump zu dumpen und die Tabellen zu löschen
    mysqldump --add-drop-table --no-data -u rootuser -p database_name | grep 'DROP TABLE' >> ./temp.sql
    
  • Aktivieren Sie die Fremdschlüsselprüfung in der Konsole wieder.
    echo "SET FOREIGN_KEY_CHECKS = 1;" >> ./temp.sql
    
  • Stellen Sie Ihre Datenbank mit Hilfe der Dump-Datei
    mysql -u root -p db_name < ./temp.sql
    

Dies wird einfacher funktionieren, wenn Sie Kenntnisse über Konsolenbefehle haben und MySQL in Ihrer Pfadvariablen eingerichtet haben.

Verifizierung gelöschter Tabellen

Um zu überprüfen, ob tatsächlich alle Tabellen gelöscht wurden, können wir die Datenbank überprüfen, ob sie die Tabellen mit diesem Skript noch ausgibt.

SHOW TABLES FROM database_name;

Wenn es keine Ausgabe gibt, bedeutet das, dass die Abfrage erfolgreich ausgeführt wurde und alle SQL-Tabellen aus dieser spezifischen Datenbank gelöscht wurden.

Zusammenfassend lässt sich sagen, dass der Grund, warum Sie Tabellen nicht direkt in SQL massenweise löschen können, darin liegt, dass relationale Datenbanken stark von Beziehungen und Einschränkungen abhängig sind. Wenn es Ihnen erlaubt war, Tabellen zu löschen, ohne die Fremdschlüsselprüfung explizit zu deaktivieren, werden die Beziehungen, Einschränkungen und Fremdschlüsselkonfigurationen beschädigt.

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

Verwandter Artikel - MySQL Table