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;| producto | precio_euros |
|---|---|
| iPhone 15 Pro | 1299.99 |
| Samsung Galaxy S24 | 899.99 |
| Google Pixel 8 | 699.00 |
| Xiaomi 14 | 599.99 |
| MacBook Air M3 | 1399.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 producto | Precio (EUR) | Unidades disponibles |
|---|---|---|
| iPhone 15 Pro | 1299.99 | 45 |
| Samsung Galaxy S24 | 899.99 | 62 |
| Google Pixel 8 | 699.00 | 38 |
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;| nombre | precio * stock |
|---|---|
| iPhone 15 Pro | 58499.55 |
| Samsung Galaxy S24 | 55799.38 |
| Google Pixel 8 | 26562.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;| nombre | valor_inventario |
|---|---|
| iPhone 15 Pro | 58499.55 |
| Samsung Galaxy S24 | 55799.38 |
| Google Pixel 8 | 26562.00 |
Lo mismo con funciones:
SELECT
CONCAT(nombre, ' ', apellidos) AS nombre_completo,
UPPER(ciudad) AS ciudad_mayusculas
FROM clientes
LIMIT 5;| nombre_completo | ciudad_mayusculas |
|---|---|
| María García López | MADRID |
| Carlos Rodríguez Martín | BARCELONA |
| Ana Martínez Ruiz | SEVILLA |
| Pedro Fernández Castro | MADRID |
| Laura López Sánchez | BARCELONA |
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;| nombre | precio | categoria |
|---|---|---|
| iPhone 15 Pro | 1299.99 | Smartphones |
| Samsung Galaxy S24 | 899.99 | Smartphones |
| Google Pixel 8 | 699.00 | Smartphones |
| Xiaomi 14 | 599.99 | Smartphones |
| MacBook Air M3 | 1399.00 | Portá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;| empleado | puesto | supervisor |
|---|---|---|
| Ricardo | Director General | NULL |
| Sofía | Directora de Ventas | Ricardo |
| Alberto | Director de Logística | Ricardo |
| Natalia | Vendedora Senior | Sofía |
| Daniel | Vendedor | Sofía |
| Patricia | Vendedora | Sofía |
| Raúl | Vendedor Junior | Natalia |
| Cristina | Responsable de Almacén | Alberto |
| Marcos | Operario de Almacén | Cristina |
| Inés | Operaria de Almacén | Cristina |
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_id | etiqueta |
|---|---|
| 1 | premium |
| 5 | premium |
| 7 | premium |
| 15 | premium |
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:
En el siguiente artículo veremos cómo usar comentarios en SQL para documentar tus consultas.
Escrito por Eduardo Lázaro
