No hay una instrucción SQL específica para cambiar el nombre de una base de datos. El comando ALTER DATABASE solo permite ajustar ciertas propiedades de la base de datos, pero no el nombre.
Una solución consiste en utilizar CREATE DATABASE y RENAME TABLE. Las tablas se pueden mover de una base de datos a otra utilizando RENAME. Los comandos deberían quedar así:
CREATE DATABASE nombre_nueva_BD;
RENAME TABLE nombre_vieja_BD.tabla_a TO nombre_nueva_BD.tabla_a;
RENAME TABLE nombre_vieja_BD.tabla_b TO nombre_nueva_BD.tabla_b;
…
DROP DATABASE vieja_db;
Si hay muchas tablas o se desea automatizar esto para cualquier base de datos, lo mejor es ejecutar un script que genere los cambios de nombre de las tablas:
for tabla in mysql -u USUARIO_BD -pCONTRASEÑA_BD -s -N -e "show tables from vieja_db;"
do
mysql -u USUARIO_BD -pCONTRASEÑA_BD -s -N -e "RENAME TABLE vieja_db.$tabla TO nueva_db.$tabla;"
done
También se puede realizar en menos pasos utilizando el comando mysqldump:
mysql -u USUARIO_BD -pCONTRASEÑA_BD -e "CREATE DATABASE nueva_db"
mysqldump -u USUARIO_BD -pCONTRASEÑA_BD vieja_db | mysql -u USUARIO_BD -pCONTRASEÑA_BD -D nueva_db
Este comando genera una copia de seguridad completa de la base de datos original y la importa en una nueva base de datos que debe haberse creado previamente y que esté vacía.