Nie możesz tego zrobić za pomocą jednego polecenia MySQL, jednak możesz użyć MySQL do skonstruowania instrukcji za siebie:
W powłoce MySQL lub przez PHPMyAdmin użyj następującego zapytania
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_name LIKE 'myprefix_%';
Spowoduje to wygenerowanie instrukcji DROP, którą można skopiować i wykonać, aby usunąć tabele.
EDYCJA: Zastrzeżenie tutaj - instrukcja wygenerowana powyżej spowoduje usunięcie wszystkich tabel we wszystkich bazach danych z tym prefiksem. Jeśli chcesz ograniczyć to do konkretnej bazy danych, zmodyfikuj zapytanie tak, aby wyglądało tak i zamień nazwę_bazy_danych na własną nazwę_bazy_danych:
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\_%';
Niektóre z wcześniejszych odpowiedzi były bardzo dobre. Połączyłem ich pomysły z niektórymi pojęciami z innych odpowiedzi w Internecie.
Musiałem usunąć wszystkie tabele zaczynające się od `` temp_ '' Po kilku iteracjach wymyśliłem ten blok kodu:
Mam nadzieję, że jest to przydatne dla innych programistów MySQL / PHP.
źródło
skopiuj wyniki i wklej je do edytora tekstu lub wyślij zapytanie do pliku, użyj kilku wyszukiwań i zamian, aby usunąć niechciane formatowanie i zastąp
\n
przecinkiem wstaw a;
na końcu i dodaj drop table na początku.otrzymasz coś, co wygląda tak:
źródło
Rozwiązanie @ andre-miller jest dobre, ale jest jeszcze lepsze i nieco bardziej profesjonalne, które pomoże Ci wykonać wszystko za jednym razem. Nadal będzie potrzebować więcej niż jednego polecenia, ale to rozwiązanie pozwoli ci używać SQL do automatycznych kompilacji.
Uwaga: ten kod jest zależny od platformy, jest przeznaczony dla MySQL, ale z pewnością można go zaimplementować dla Postgre, Oracle i MS SQL z niewielkimi zmianami.
źródło
źródło
Pomyślnie upuszczam tabelę, edytując zapytanie w ten sposób
źródło
Możesz to zrobić jednym poleceniem z MySQL:
Prawdopodobnie będziesz musiał jednak dynamicznie zbudować listę tabel w kodzie.
Alternatywnym podejściem byłoby użycie biblioteki procedur ogólnego przeznaczenia dla MySQL 5.
źródło
Chciałem tylko opublikować dokładny SQL, którego użyłem - jest to mieszanka trzech najpopularniejszych odpowiedzi:
źródło
Po prostu inne rozwiązanie wykorzystujące GROUP_CONCAT, więc wykona jedno zapytanie upuszczające, takie jak
DROP TABLE tabela1, tabela2, ..
źródło
Okazało się, że przygotowane zestawienia były trochę trudne do wykonania dla mnie, ale ustawienie
GROUP_CONCAT_MAX_LEN
było niezbędne, gdy masz dużo tabel. Spowodowało to prosty, trzyetapowy proces z wycinaniem i wklejaniem z wiersza poleceń mysql, który działał świetnie:Następnie ostrożnie wytnij i wklej powstałe długie polecenie DROP .
źródło
\G
zamiast;
daje trochę czystszy wynik