Seleccionar base de datos

Antes de trabajar con tablas, vistas o cualquier otro objeto, debes indicar a MySQL en qué base de datos quieres operar. La sentencia USE establece la base de datos activa para la sesión actual. Todas las consultas posteriores se ejecutarán sobre esa base de datos, a menos que especifiques otra explícitamente.

Sintaxis

USE nombre_base_de_datos;

Seleccionar nuestra base de datos

USE tienda_mysql;
Database changed

A partir de este momento, cualquier referencia a una tabla como productos se interpreta como tienda_mysql.productos. No necesitas escribir el nombre completo en cada consulta.

Verificar la base de datos actual

Para saber qué base de datos está seleccionada:

SELECT DATABASE();
DATABASE()
tienda_mysql

Si no has seleccionado ninguna base de datos, DATABASE() devuelve NULL.

Cambiar entre bases de datos

Puedes cambiar de base de datos en cualquier momento ejecutando otro USE:

USE tienda_mysql;
-- Trabajar con tienda_mysql...
SELECT COUNT(*) FROM productos;
 
USE otra_base_de_datos;
-- Ahora las consultas van a otra_base_de_datos

El cambio es instantáneo. No necesitas "desconectar" de la base de datos anterior.

Nombres cualificados

Puedes acceder a tablas de cualquier base de datos sin cambiar la base de datos activa usando el nombre cualificado base_de_datos.tabla:

USE tienda_mysql;
 
-- Acceder a una tabla de otra base de datos
SELECT * FROM otra_base.mi_tabla;
 
-- Incluso puedes hacer JOINs entre bases de datos
SELECT p.nombre, o.valor
FROM tienda_mysql.productos p
JOIN otra_base.opciones o ON p.id = o.producto_id;

Esto es útil cuando necesitas consultar datos de varias bases de datos sin cambiar constantemente con USE. El usuario debe tener permisos sobre ambas bases de datos.

Conectar directamente a una base de datos

Al conectarte a MySQL desde la terminal, puedes especificar la base de datos en la propia conexión:

mysql -u root -p tienda_mysql

Esto equivale a conectarte y ejecutar USE tienda_mysql inmediatamente. Es la forma más habitual de trabajar cuando solo necesitas una base de datos.

También puedes especificar la base de datos al ejecutar un script:

mysql -u root -p tienda_mysql < script.sql

Error al usar una base de datos inexistente

Si especificas una base de datos que no existe:

USE base_inexistente;
ERROR 1049 (42000): Unknown database 'base_inexistente'

MySQL devuelve un error y la base de datos activa no cambia. Verifica los nombres disponibles con SHOW DATABASES.

Sin base de datos seleccionada

Si intentas ejecutar una consulta sin haber seleccionado una base de datos:

SELECT * FROM productos;
ERROR 1046 (3D000): No database selected

Solución: ejecuta USE nombre_base antes de la consulta, o usa el nombre cualificado base.tabla.

En el siguiente artículo veremos cómo listar todas las bases de datos del servidor con SHOW DATABASES.

Escrito por Eduardo Lázaro