DROP DATABASE

La sentencia DROP DATABASE elimina una base de datos completa del servidor MySQL, incluyendo todas sus tablas, vistas, procedimientos almacenados y cualquier otro objeto que contenga. Es una operación irreversible: una vez eliminada, los datos se pierden permanentemente (a menos que tengas un backup).

Sintaxis

DROP DATABASE nombre_base_de_datos;

MySQL también acepta DROP SCHEMA como sinónimo:

DROP SCHEMA nombre_base_de_datos;

Eliminar una base de datos

DROP DATABASE mi_app;
Query OK, 0 rows affected (0.05 sec)

MySQL elimina todas las tablas de la base de datos, borra los archivos de datos del disco y elimina el directorio. El número de "rows affected" indica cuántas tablas se eliminaron (0 si la base de datos estaba vacía).

IF EXISTS

Si intentas eliminar una base de datos que no existe, MySQL devuelve un error:

DROP DATABASE app_inexistente;
ERROR 1008 (HY000): Can't drop database 'app_inexistente'; database doesn't exist

Para evitar este error, usa IF EXISTS:

DROP DATABASE IF EXISTS app_inexistente;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MySQL genera una advertencia en lugar de un error. Este patrón es estándar en scripts de migración y despliegue donde no puedes garantizar el estado previo del servidor.

Qué se elimina

DROP DATABASE elimina todo lo que contiene la base de datos: todas las tablas y sus datos, las vistas, los procedimientos y funciones almacenados, los triggers, y los eventos programados.

No elimina los permisos de usuario asociados a la base de datos. Si un usuario tenía permisos sobre mi_app, esos permisos permanecen en la tabla de privilegios aunque la base de datos ya no exista.

Precauciones

DROP DATABASE es una de las sentencias más peligrosas de MySQL. Antes de ejecutarla:

Verifica que estás conectado al servidor correcto, especialmente si trabajas con varios entornos (desarrollo, staging, producción). Confirma el nombre de la base de datos con SHOW DATABASES antes de eliminar. Haz un backup si los datos tienen algún valor. No ejecutes esta sentencia en producción sin una razón muy clara y una copia de seguridad verificada.

-- Verificar antes de eliminar
SHOW DATABASES;
 
-- Hacer backup primero (desde la terminal)
-- mysqldump -u root -p mi_app > backup_mi_app.sql
 
-- Solo entonces eliminar
DROP DATABASE mi_app;

Recrear una base de datos vacía

Un patrón habitual en desarrollo es eliminar y recrear la base de datos para empezar de cero:

DROP DATABASE IF EXISTS tienda_mysql;
CREATE DATABASE tienda_mysql CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
USE tienda_mysql;
-- Ejecutar el script de creación de tablas...

Esto garantiza un estado limpio sin residuos de datos o estructuras anteriores. Es común en pipelines de testing y en scripts de inicialización de bases de datos de desarrollo.

Permisos necesarios

Para eliminar una base de datos necesitas el privilegio DROP. El usuario root lo tiene por defecto. Es una buena práctica de seguridad no conceder el privilegio DROP a usuarios de aplicación en producción.

En el siguiente artículo veremos cómo seleccionar una base de datos activa con USE.

Escrito por Eduardo Lázaro