Cómo eliminar todas las tablas en MySQL
- Consulta SQL para soltar todas las tablas
- Vaciar y recrear la base de datos
- Verificación de tablas eliminadas
Este tutorial demuestra varias formas en que un usuario puede eliminar todas las tablas en MySQL y enumera ejemplos de scripts para hacerlo posible.
La razón por la que no se pueden eliminar todas las tablas en una sola línea de código es que en una base de datos de gran tamaño y bien diseñada, es probable que haya muchas restricciones de claves externas.
Consulta SQL para soltar todas las tablas
-
Lo primero que hay que hacer es conseguir que las mesas de caída no tengan que comprobar las restricciones de las claves extranjeras.
SET FOREIGN_KEY_CHECKS = 0;
-
A continuación, proceder a escribir un script para consultar todas las tablas dentro de su base de datos.
SELECT table_name FROM information_schema.tables WHERE table_schema = db_name;
-
Después, copie todas las tablas en el resultado de la consulta anterior y bórrelas una por una.
DROP TABLE IF EXISTS tableOne; DROP TABLE IF EXISTS tableTwo; DROP TABLE IF EXISTS tableThree; DROP TABLE IF EXISTS tableEtc;
-
Restablecer la configuración de la comprobación de la clave externa a los valores predeterminados
SET FOREIGN_KEY_CHECKS = 1;
Este enfoque es posible porque desactivamos la comprobación de la llave extranjera al principio. Así que cualquiera que sea el orden en que borremos las tablas, no arrojará ningún error de restricción. Sólo asegúrate de volver a activar la comprobación de clave externa después del script.
Vaciar y recrear la base de datos
Para que esto sea posible, es necesario asegurarse de que, además de las tablas, también está dispuesto a eliminar las funciones almacenadas, los índices, los roles y otros ajustes aparte de las tablas, ya que está eliminando toda la base de datos.
Para que esto se ejecute con éxito, el rol actual debe tener privilegios de “soltar” y “crear” en la base de datos.
DROP DATABASE database_name;
Después de soltar, recrear la base de datos.
CREATE DATABASE database_name;
Este enfoque es probablemente el método más volátil para eliminar todas las tablas. Esto es adecuado sólo para bases de datos pequeñas o experimentales.
Usando mysqldump
para soltar tablas en MySQL
mysqldump
es un comando de consola atribuido desde MySQL. Asumiendo que ya tiene MySQL configurado en sus variables de ruta, podemos usar el comando para soltar tablas dentro de su base de datos.
-
El primer paso sigue siendo desactivar la comprobación de claves externas en la consola.
echo "SET FOREIGN_KEY_CHECKS = 0" > ./temp.sql
-
Proceda a volcar la base de datos usando
mysqldump
y deje caer las tablasmysqldump --add-drop-table --no-data -u rootuser -p database_name | grep 'DROP TABLE' >> ./temp.sql
-
Vuelva a activar la comprobación de la clave externa en la consola.
echo "SET FOREIGN_KEY_CHECKS = 1;" >> ./temp.sql
-
Restaure su base de datos usando el archivo de volcado
mysql -u root -p db_name < ./temp.sql
Esto funcionará más fácilmente si tienes conocimiento sobre los comandos de la consola y tienes MySQL configurado en tu variable de ruta.
Verificación de tablas eliminadas
Para verificar si todas las tablas fueron realmente eliminadas, podemos comprobar la base de datos si todavía da salida a las tablas con este script.
SHOW TABLES FROM database_name;
Si no hay salida, significa que la consulta se ha ejecutado con éxito y que se han eliminado todas las tablas SQL de esa base de datos específica.
En resumen, la razón por la que no se pueden eliminar tablas en masa directamente en SQL es que las bases de datos relacionales dependen en gran medida de las relaciones y las restricciones. Si se le permitiera eliminar tablas sin desactivar explícitamente la comprobación de claves externas, las relaciones, las restricciones y las configuraciones de claves externas se verían dañadas.
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.
LinkedIn