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_onlineTable_type
categoriasBASE TABLE
clientesBASE TABLE
detalle_pedidosBASE TABLE
direccionesBASE TABLE
metodos_pagoBASE TABLE
pedidosBASE TABLE
productosBASE TABLE
resenasBASE TABLE
usuariosBASE TABLE
v_productos_activosVIEW
v_resumen_ventasVIEW

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_onlineTable_type
v_productos_activosVIEW
v_resumen_ventasVIEW
-- 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;
tablamotorfilas_aproxdatos_mbindices_mbcreadaactualizada
pedidosInnoDB28450089.0034.002024-08-15 10:00:002025-03-18 16:45:00
detalle_pedidosInnoDB712300145.0052.002024-08-15 10:00:002025-03-18 16:45:00
productosInnoDB128004.501.202024-08-15 10:00:002025-03-17 09:30:00
clientesInnoDB4520012.003.802024-08-15 10:00:002025-03-18 14:20:00
resenasInnoDB89002.300.802024-09-01 11:00:002025-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;
tablamotorfilastotal_mbcomentarionum_columnasclave_primaria
categoriasInnoDB250.024id
clientesInnoDB4520015.808id
detalle_pedidosInnoDB712300197.006id
pedidosInnoDB284500123.009id
productosInnoDB128005.7012id

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_NAMECREATE_TIMEENGINETABLE_ROWS
descuentos2025-03-18 16:20:00InnoDB2
cupones2025-03-18 16:20:00InnoDB0

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