Sie können dies nicht mit nur einem einzigen MySQL-Befehl tun. Sie können jedoch MySQL verwenden, um die Anweisung für Sie zu erstellen:
Verwenden Sie in der MySQL-Shell oder über PHPMyAdmin die folgende Abfrage
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_name LIKE 'myprefix_%';
Dadurch wird eine DROP-Anweisung generiert, die Sie kopieren und ausführen können, um die Tabellen zu löschen.
EDIT: Ein Haftungsausschluss hier - die oben generierte Anweisung löscht alle Tabellen in allen Datenbanken mit diesem Präfix. Wenn Sie es auf eine bestimmte Datenbank beschränken möchten, ändern Sie die Abfrage so, dass sie so aussieht, und ersetzen Sie den Datenbanknamen durch Ihren eigenen Datenbanknamen:
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_schema = 'database_name' AND table_name LIKE 'myprefix_%';
[...] LIKE 'myprefix\_%';
Einige der früheren Antworten waren sehr gut. Ich habe ihre Ideen mit einigen Begriffen aus anderen Antworten im Web zusammengetragen.
Ich musste alle Tabellen löschen, die mit 'temp_' beginnen. Nach einigen Iterationen kam ich auf diesen Codeblock:
Ich hoffe, dass dies für andere MySQL / PHP-Programmierer nützlich ist.
quelle
Kopieren Sie die Ergebnisse und fügen Sie sie in einen Texteditor ein oder geben Sie die Abfrage in eine Datei aus. Verwenden Sie einige Such- und Ersetzungsfunktionen, um unerwünschte Formatierungen zu entfernen, und ersetzen Sie sie
\n
durch ein Komma;
am Ende und fügen Sie eine Drop-Tabelle an der Vorderseite hinzu.Sie erhalten etwas, das so aussieht:
quelle
Die @ andre-miller- Lösung ist gut, aber es gibt noch bessere und etwas professionellere, mit denen Sie alles auf einmal ausführen können. Es wird immer noch mehr als einen Befehl benötigt, aber mit dieser Lösung können Sie SQL für automatisierte Builds verwenden.
Hinweis: Dieser Code ist plattformabhängig, er ist für MySQL, kann aber mit geringfügigen Änderungen sicher für Postgre, Oracle und MS SQL implementiert werden.
quelle
quelle
Ich lösche die Tabelle erfolgreich durch Bearbeiten der Abfrage, um dies zu mögen
quelle
Mit MySQL können Sie dies in einem Befehl tun:
Wahrscheinlich müssen Sie die Tabellenliste jedoch dynamisch im Code erstellen.
Ein alternativer Ansatz wäre die Verwendung der Allzweck-Routinebibliothek für MySQL 5.
quelle
Ich wollte nur genau das SQL posten, das ich verwendet habe - es ist eine Mischung aus den Top-3-Antworten:
quelle
Nur eine andere Lösung, die GROUP_CONCAT verwendet, damit eine Drop-Abfrage wie
DROP TABLE table1, table2, .. ausgeführt wird.
quelle
Ich fand, dass die vorbereiteten Aussagen etwas schwierig waren, um für mich zu arbeiten, aber das Festlegen der
GROUP_CONCAT_MAX_LEN
war wichtig, wenn Sie viele Tabellen haben. Dies führte zu einem einfachen dreistufigen Prozess mit Ausschneiden und Einfügen über die MySQL- Befehlszeile, der für mich hervorragend funktionierte:Schneiden Sie dann die resultierende lange DROP- Anweisung vorsichtig aus und fügen Sie sie ein .
quelle
\G
statt;
ergibt eine etwas sauberere Ausgabe