Wie man alle Tabellen in MySQL fallen lässt
- SQL-Abfrage, um alle Tabellen zu löschen
- Die Datenbank leeren und neu erstellen
- Verifizierung gelöschter Tabellen
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öschenmysqldump --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.
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.
LinkedInVerwandter Artikel - MySQL Table
- Alle Zeilen einer MySQL-Tabelle durchlaufen
- Kopieren Sie Tabellenstrukturen, ohne Daten in MySQL zu kopieren
- Rufen Sie die ID des zuletzt eingefügten Datensatzes in MySQL ab
- Sichern Sie eine einzelne Tabelle mit Mysqldump
- Tabellen- und Datenbankstruktur in MySQL anzeigen
- Unterschied zwischen zwei Tabellen in MySQL