No puede hacerlo con un solo comando de MySQL, sin embargo, puede usar MySQL para construir la declaración por usted:
En el shell de MySQL o mediante PHPMyAdmin, use la siguiente consulta
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_name LIKE 'myprefix_%';
Esto generará una declaración DROP que puede copiar y ejecutar para eliminar las tablas.
EDITAR: Un descargo de responsabilidad aquí: la declaración generada anteriormente eliminará todas las tablas en todas las bases de datos con ese prefijo. Si desea limitarlo a una base de datos específica, modifique la consulta para que se vea así y reemplace database_name con su propia database_name:
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\_%';
Algunas de las respuestas anteriores fueron muy buenas. He reunido sus ideas con algunas nociones de otras respuestas en la web.
Necesitaba eliminar todas las tablas que comenzaban con 'temp_' Después de algunas iteraciones, se me ocurrió este bloque de código:
Espero que esto sea útil para otros programadores de MySQL / PHP.
fuente
copie los resultados y péguelos en un editor de texto o envíe la consulta a un archivo, use algunas búsquedas y reemplazos para eliminar el formato no deseado y reemplácelos
\n
con una coma, coloque una;
al final y agregue una tabla desplegable al frente.obtendrás algo que se parece a esto:
fuente
La solución @ andre-miller es buena, pero hay una solución aún mejor y un poco más profesional que lo ayudará a ejecutar todo de una vez. Aún necesitará más de un comando, pero esta solución le permitirá usar SQL para compilaciones automatizadas.
Nota: este código depende de la plataforma, es para MySQL pero seguro que podría implementarse para Postgre, Oracle y MS SQL con ligeros cambios.
fuente
fuente
Dejo caer la tabla con éxito editando la consulta para que me guste esto
fuente
Puede hacerlo en un comando con MySQL:
Sin embargo, probablemente tendrá que construir la lista de tablas dinámicamente en código.
Un enfoque alternativo sería utilizar la biblioteca de rutinas de propósito general para MySQL 5.
fuente
Solo quería publicar el SQL exacto que utilicé; es una mezcla de las 3 respuestas principales:
fuente
Solo otra solución que usa GROUP_CONCAT para que ejecute una consulta de caída como
DROP TABLE table1, table2, ..
fuente
Descubrí que las declaraciones preparadas eran un poco complicadas para que me funcionaran, pero configurarlas
GROUP_CONCAT_MAX_LEN
era esencial cuando tienes muchas tablas. Esto resultó en un proceso simple de tres pasos con cortar y pegar desde la línea de comando mysql que funcionó muy bien para mí:Luego, corte y pegue con cuidado la declaración DROP larga resultante .
fuente
\G
lugar de;
da un resultado un poco más limpio