Puedes usar information_schema
para encontrar nombres de tablas e incluso formatear los resultados como un montón de DROP
declaraciones.
SELECT CONCAT('DROP TABLE ', TABLE_NAME, '; ')
FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name NOT IN ('foo', 'bar', 'baz');
(La DATABASE()
la función devuelve el use
actual 'd base de datos.)
Usando PREPARE
y EXECUTE
, incluso podría evitar copiar y pegar y (en MySQL 5.0.13 y versiones posteriores) escribir un procedimiento almacenado para hacerlo.