Después de identificar las bases de datos disponibles con SHOW DATABASES, el siguiente paso natural es explorar el contenido de una base de datos específica. El comando SHOW TABLES lista todas las tablas (y vistas) de la base de datos seleccionada, y su variante SHOW FULL TABLES añade información sobre el tipo de cada objeto. Es un comando fundamental para familiarizarse con la estructura de una base de datos desconocida o verificar que las migraciones se aplicaron correctamente.
Uso básico
Para ver las tablas de la base de datos seleccionada actualmente:
USE tienda_online;
SHOW TABLES;| Tables_in_tienda_online |
|---|
| categorias |
| clientes |
| detalle_pedidos |
| direcciones |
| metodos_pago |
| pedidos |
| productos |
| resenas |
| usuarios |
Si aún no has seleccionado una base de datos con USE, recibirás el error No database selected. Para evitarlo, puedes especificar la base de datos directamente con la cláusula FROM:
SHOW TABLES FROM erp_produccion;| Tables_in_erp_produccion |
|---|
| clientes |
| departamentos |
| empleados |
| fact_ventas |
| log_actividad |
| pedidos |
| productos |
Esta sintaxis es útil cuando necesitas consultar las tablas de otra base de datos sin cambiar tu contexto actual.
SHOW FULL TABLES
La variante SHOW FULL TABLES añade una columna que indica si cada objeto es una tabla base (BASE TABLE) o una vista (VIEW):
SHOW FULL TABLES FROM tienda_online;| Tables_in_tienda_online | Table_type |
|---|---|
| categorias | BASE TABLE |
| clientes | BASE TABLE |
| detalle_pedidos | BASE TABLE |
| direcciones | BASE TABLE |
| metodos_pago | BASE TABLE |
| pedidos | BASE TABLE |
| productos | BASE TABLE |
| resenas | BASE TABLE |
| usuarios | BASE TABLE |
| v_productos_activos | VIEW |
| v_resumen_ventas | VIEW |
Esta información es valiosa cuando heredas una base de datos y necesitas distinguir rápidamente entre tablas reales y vistas. Puedes filtrar para ver solo un tipo:
-- Solo las vistas
SHOW FULL TABLES WHERE Table_type = 'VIEW';| Tables_in_tienda_online | Table_type |
|---|---|
| v_productos_activos | VIEW |
| v_resumen_ventas | VIEW |
-- Solo las tablas base
SHOW FULL TABLES WHERE Table_type = 'BASE TABLE';Filtrar con LIKE
Al igual que con SHOW DATABASES, puedes filtrar las tablas con patrones LIKE:
-- Tablas que empiezan con 'prod'
SHOW TABLES LIKE 'prod%';| Tables_in_tienda_online (prod%) |
|---|
| productos |
-- Tablas que contienen 'pedido'
SHOW TABLES LIKE '%pedido%';| Tables_in_tienda_online (%pedido%) |
|---|
| detalle_pedidos |
| pedidos |
-- Tablas cuyo nombre termina en 's'
SHOW TABLES LIKE '%s';| Tables_in_tienda_online (%s) |
|---|
| categorias |
| clientes |
| detalle_pedidos |
| direcciones |
| pedidos |
| productos |
| resenas |
| usuarios |
Filtrar con WHERE
Para filtros más sofisticados, usa la cláusula WHERE. Ten en cuenta que el nombre de la columna depende de la base de datos:
-- Tablas cuyo nombre tiene más de 10 caracteres
SHOW TABLES WHERE `Tables_in_tienda_online` LIKE '%_______%';Para facilitar el uso de WHERE, muchos administradores prefieren consultar information_schema directamente:
SELECT TABLE_NAME, TABLE_TYPE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'tienda_online'
AND TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME;Equivalente con information_schema
La consulta equivalente a SHOW TABLES usando information_schema ofrece mucha más información:
SELECT
TABLE_NAME AS tabla,
ENGINE AS motor,
TABLE_ROWS AS filas_aprox,
ROUND(DATA_LENGTH / 1024 / 1024, 2) AS datos_mb,
ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS indices_mb,
CREATE_TIME AS creada,
UPDATE_TIME AS actualizada
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'tienda_online'
AND TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_ROWS DESC;| tabla | motor | filas_aprox | datos_mb | indices_mb | creada | actualizada |
|---|---|---|---|---|---|---|
| pedidos | InnoDB | 284500 | 89.00 | 34.00 | 2024-08-15 10:00:00 | 2025-03-18 16:45:00 |
| detalle_pedidos | InnoDB | 712300 | 145.00 | 52.00 | 2024-08-15 10:00:00 | 2025-03-18 16:45:00 |
| productos | InnoDB | 12800 | 4.50 | 1.20 | 2024-08-15 10:00:00 | 2025-03-17 09:30:00 |
| clientes | InnoDB | 45200 | 12.00 | 3.80 | 2024-08-15 10:00:00 | 2025-03-18 14:20:00 |
| resenas | InnoDB | 8900 | 2.30 | 0.80 | 2024-09-01 11:00:00 | 2025-03-16 20:15:00 |
Esta consulta es mucho más informativa que un simple SHOW TABLES y es la que suelen usar los administradores en su trabajo diario.
Caso práctico: documentar el esquema de una base de datos
Cuando recibes la responsabilidad de una base de datos que no conoces, un buen punto de partida es generar un inventario completo:
SELECT
t.TABLE_NAME AS tabla,
t.ENGINE AS motor,
t.TABLE_ROWS AS filas,
ROUND((t.DATA_LENGTH + t.INDEX_LENGTH) / 1024 / 1024, 2)
AS total_mb,
t.TABLE_COMMENT AS comentario,
COUNT(c.COLUMN_NAME) AS num_columnas,
GROUP_CONCAT(
CASE WHEN c.COLUMN_KEY = 'PRI' THEN c.COLUMN_NAME END
) AS clave_primaria
FROM information_schema.TABLES t
JOIN information_schema.COLUMNS c
ON t.TABLE_SCHEMA = c.TABLE_SCHEMA
AND t.TABLE_NAME = c.TABLE_NAME
WHERE t.TABLE_SCHEMA = 'tienda_online'
AND t.TABLE_TYPE = 'BASE TABLE'
GROUP BY t.TABLE_NAME, t.ENGINE, t.TABLE_ROWS,
t.DATA_LENGTH, t.INDEX_LENGTH, t.TABLE_COMMENT
ORDER BY t.TABLE_NAME;| tabla | motor | filas | total_mb | comentario | num_columnas | clave_primaria |
|---|---|---|---|---|---|---|
| categorias | InnoDB | 25 | 0.02 | 4 | id | |
| clientes | InnoDB | 45200 | 15.80 | 8 | id | |
| detalle_pedidos | InnoDB | 712300 | 197.00 | 6 | id | |
| pedidos | InnoDB | 284500 | 123.00 | 9 | id | |
| productos | InnoDB | 12800 | 5.70 | 12 | id |
Caso práctico: verificar tablas después de una migración
Después de aplicar un script de migración, puedes verificar que las tablas nuevas se crearon correctamente:
-- Tablas creadas hoy
SELECT TABLE_NAME, CREATE_TIME, ENGINE, TABLE_ROWS
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'tienda_online'
AND DATE(CREATE_TIME) = CURDATE()
ORDER BY CREATE_TIME DESC;| TABLE_NAME | CREATE_TIME | ENGINE | TABLE_ROWS |
|---|---|---|---|
| descuentos | 2025-03-18 16:20:00 | InnoDB | 2 |
| cupones | 2025-03-18 16:20:00 | InnoDB | 0 |
Esto confirma que la migración del sistema de descuentos creó las dos tablas esperadas. Para una verificación más profunda, puedes usar SHOW CREATE TABLE para comparar la estructura con lo esperado.
SHOW TABLES es la herramienta de exploración por excelencia dentro de una base de datos. En el siguiente artículo veremos cómo consultar la versión de MySQL instalada, información que necesitarás frecuentemente al investigar compatibilidad de funciones o diagnosticar problemas.
Escrito por Eduardo Lázaro
