Alias

Un alias es un nombre temporal que le asignas a una columna o a una tabla dentro de una consulta. No modifica nada en la base de datos: solo cambia cómo se muestra el resultado o cómo te refieres a una tabla dentro de esa consulta específica. Los alias hacen las consultas más legibles y los resultados más comprensibles.

Alias de columnas

Sintaxis con AS

La forma más explícita de crear un alias de columna es con la palabra clave AS:

SELECT
    nombre AS producto,
    precio AS precio_euros
FROM productos
LIMIT 5;
productoprecio_euros
iPhone 15 Pro1299.99
Samsung Galaxy S24899.99
Google Pixel 8699.00
Xiaomi 14599.99
MacBook Air M31399.00

Las columnas en el resultado muestran los nombres producto y precio_euros en lugar de nombre y precio. Los datos son exactamente los mismos, solo cambia el encabezado.

Sintaxis sin AS

MySQL permite omitir la palabra AS. El alias se coloca directamente después del nombre de la columna, separado por un espacio:

SELECT
    nombre producto,
    precio precio_euros
FROM productos
LIMIT 5;

El resultado es idéntico al anterior. Sin embargo, la versión con AS es más clara y menos propensa a confusiones, especialmente cuando la consulta es larga o tiene muchas columnas. A lo largo de este tutorial usaremos siempre AS por claridad.

Alias con espacios y caracteres especiales

Si necesitas que el alias contenga espacios o caracteres especiales, enciérralo entre comillas dobles o backticks:

SELECT
    nombre AS `Nombre del producto`,
    precio AS `Precio (EUR)`,
    stock AS `Unidades disponibles`
FROM productos
LIMIT 3;
Nombre del productoPrecio (EUR)Unidades disponibles
iPhone 15 Pro1299.9945
Samsung Galaxy S24899.9962
Google Pixel 8699.0038

Esto puede ser útil cuando generas informes o exportas datos donde los encabezados deben ser descriptivos. En el día a día y en código de aplicación, es preferible usar alias simples sin espacios.

Alias de expresiones

Los alias son especialmente útiles con expresiones calculadas. Sin alias, MySQL usa la propia expresión como nombre de columna, lo que suele ser poco legible:

SELECT
    nombre,
    precio * stock
FROM productos
LIMIT 3;
nombreprecio * stock
iPhone 15 Pro58499.55
Samsung Galaxy S2455799.38
Google Pixel 826562.00

El encabezado precio * stock es la expresión literal. Con un alias queda mucho mejor:

SELECT
    nombre,
    precio * stock AS valor_inventario
FROM productos
LIMIT 3;
nombrevalor_inventario
iPhone 15 Pro58499.55
Samsung Galaxy S2455799.38
Google Pixel 826562.00

Lo mismo con funciones:

SELECT
    CONCAT(nombre, ' ', apellidos) AS nombre_completo,
    UPPER(ciudad) AS ciudad_mayusculas
FROM clientes
LIMIT 5;
nombre_completociudad_mayusculas
María García LópezMADRID
Carlos Rodríguez MartínBARCELONA
Ana Martínez RuizSEVILLA
Pedro Fernández CastroMADRID
Laura López SánchezBARCELONA

Sin los alias, los encabezados serían CONCAT(nombre, ' ', apellidos) y UPPER(ciudad), que son mucho menos legibles.

Dónde se pueden usar los alias de columna

Los alias de columna definidos en el SELECT tienen un alcance limitado. No puedes usarlos en todas las cláusulas de la consulta. Esto se debe al orden en que MySQL procesa internamente las cláusulas.

Sí puedes usar alias en:

El ORDER BY, porque se procesa después del SELECT:

SELECT nombre, precio * stock AS valor_inventario
FROM productos
ORDER BY valor_inventario DESC
LIMIT 5;

El HAVING, porque también se procesa después del SELECT:

SELECT categoria_id, AVG(precio) AS precio_medio
FROM productos
GROUP BY categoria_id
HAVING precio_medio > 100;

No puedes usar alias en:

El WHERE, porque se procesa antes del SELECT:

-- Esto da ERROR
SELECT nombre, precio * 1.21 AS precio_con_iva
FROM productos
WHERE precio_con_iva > 1000;
ERROR 1054 (42S22): Unknown column 'precio_con_iva' in 'where clause'

La solución es repetir la expresión en el WHERE:

SELECT nombre, precio * 1.21 AS precio_con_iva
FROM productos
WHERE precio * 1.21 > 1000;

Alias de tablas

Los alias de tablas asignan un nombre corto a una tabla dentro de la consulta. Son imprescindibles cuando trabajas con varias tablas y necesitas especificar de qué tabla proviene cada columna:

SELECT
    p.nombre,
    p.precio,
    c.nombre AS categoria
FROM productos p
JOIN categorias c ON p.categoria_id = c.id
LIMIT 5;
nombrepreciocategoria
iPhone 15 Pro1299.99Smartphones
Samsung Galaxy S24899.99Smartphones
Google Pixel 8699.00Smartphones
Xiaomi 14599.99Smartphones
MacBook Air M31399.00Portátiles

Aquí p es el alias de la tabla productos y c el de categorias. En lugar de escribir productos.nombre y categorias.nombre, escribimos p.nombre y c.nombre. Esto es más conciso y cómodo.

Los alias de tablas son obligatorios en ciertos casos. Cuando haces un self join (una tabla consigo misma), necesitas alias distintos para diferenciar las dos "copias" de la misma tabla:

SELECT
    e.nombre AS empleado,
    e.puesto,
    s.nombre AS supervisor
FROM empleados e
LEFT JOIN empleados s ON e.supervisor_id = s.id;
empleadopuestosupervisor
RicardoDirector GeneralNULL
SofíaDirectora de VentasRicardo
AlbertoDirector de LogísticaRicardo
NataliaVendedora SeniorSofía
DanielVendedorSofía
PatriciaVendedoraSofía
RaúlVendedor JuniorNatalia
CristinaResponsable de AlmacénAlberto
MarcosOperario de AlmacénCristina
InésOperaria de AlmacénCristina

La tabla empleados aparece dos veces en la consulta: como e (el empleado) y como s (su supervisor). Sin alias, MySQL no podría distinguir entre las dos referencias.

Alias de tablas en consultas simples

Incluso en consultas con una sola tabla, los alias de tabla pueden hacer el código más limpio, sobre todo si el nombre de la tabla es largo:

SELECT
    ep.producto_id,
    ep.etiqueta
FROM etiquetas_producto ep
WHERE ep.etiqueta = 'premium';
producto_idetiqueta
1premium
5premium
7premium
15premium

Usar ep en lugar de etiquetas_producto hace la consulta más compacta.

Convenciones de alias

Algunas prácticas comunes para elegir buenos alias:

Para tablas, usa la primera letra o las iniciales: p para productos, dp para detalle_pedidos, ep para etiquetas_producto. Si dos tablas empiezan por la misma letra, usa dos letras: pr para productos y pe para pedidos.

Para columnas, usa nombres descriptivos en snake_case: valor_inventario, nombre_completo, precio_con_iva. El alias debe aclarar qué contiene la columna, no oscurecerlo.

Practica con Alias

Usa el editor para experimentar con alias de columnas y tablas:

Simulador SQL
Ctrl+Enter para ejecutar

En el siguiente artículo veremos cómo usar comentarios en SQL para documentar tus consultas.

Escrito por Eduardo Lázaro