SQLaliasesAStutorial

Alias (AS) en SQL: alias de tablas y columnas para principiantes

Los alias son nombres cortos para tablas y columnas en SQL. Hacen las consultas legibles y se vuelven obligatorios al hacer JOIN de tablas con nombres de columna compartidos. Sintaxis, casos imprescindibles, errores comunes y tres ejercicios.

6 min de lecturaSQL · aliases · AS · tutorial · beginner

Un alias es un seudónimo corto para una tabla o una columna en una consulta. SQL te deja renombrar cualquier cosa sobre la marcha en la salida y darle a una tabla un identificador corto para que sea más fácil de referenciar.

Dos variantes:

  • Alias de columna — renombra la columna del resultado. SELECT salary AS pay → el encabezado de la columna de salida es «pay».
  • Alias de tabla — un nombre corto para una tabla dentro de esta consulta. FROM employees e → en lugar de employees.name escribes e.name.

Palabra clave: AS. Opcional.

Por qué importan los alias

  1. Legibilidad. e.name es más corto que employees.name. En una consulta de cinco tablas eso es enorme.
  2. Obligatorios cuando hay ambigüedad. Si dos tablas comparten un nombre de columna (digamos id), la base de datos no puede saber a cuál te refieres sin un prefijo.
  3. Salida limpia. Si el resultado es LOWER(CONCAT(first_name, ' ', last_name)), la columna recibe un nombre feo autogenerado. AS full_name lo arregla.
  4. Autouniones. Cuando una tabla se une consigo misma (p. ej. una jerarquía empleado-jefe), los alias son la única forma.

Alias de columna

SELECT
  first_name AS given_name,
  last_name  AS surname,
  salary * 12 AS annual_salary
FROM employees;

Qué pasa:

  • first_name → columna de salida «given_name».
  • last_name → «surname».
  • El calculado salary * 12 → «annual_salary». Sin un alias sería ?column? (PostgreSQL) o salary * 12 (MySQL) — feo.

AS es opcional: salary * 12 annual_salary funciona igual. Por legibilidad, mantén AS.

Ejemplo real con employees:

idfirst_namelast_namesalary
1AnnaIvanova4000
2BorisPetrov2700
3VeraSidorova5000

Consulta:

SELECT
  first_name AS given_name,
  salary * 12 AS annual_salary
FROM employees;

Resultado:

given_nameannual_salary
Anna48000
Boris32400
Vera60000

Alias de tabla

SELECT e.first_name, d.name
FROM employees e
JOIN departments d ON e.department_id = d.id;

Cada tabla obtuvo un nombre de una letra. Más corto que employees.first_name y departments.name.

Buena práctica: las primeras letras del nombre de la tabla. users u, orders o, products p. Si dos tablas empiezan por la misma letra — users u, user_logs ul. Haz que el alias sea mnemotécnico, no t1, t2.

AS para los alias de tabla también es opcional y la mayoría de los estilos lo omiten:

-- equivalente
FROM employees AS e
FROM employees e

Cuándo son obligatorios los alias

En un JOIN donde ambas tablas comparten un nombre de columna, tienes que prefijar las referencias — y un alias corto es la forma práctica.

Ejemplo: un usuario tiene id, un pedido tiene id.

-- No funciona — id es ambiguo
SELECT id FROM users JOIN orders ON users.id = orders.user_id;

-- Funciona
SELECT u.id, o.id
FROM users u
JOIN orders o ON u.id = o.user_id;

Autounión — alias o nada

Cuando una tabla se une consigo misma, la base de datos no puede distinguir las copias sin alias. Ejemplo: empleados con un manager_id que referencia a otro empleado de la misma tabla.

employees:

idnamemanager_id
1AnnaNULL
2Boris1
3Vera1
4Grisha2
5Denis2

Objetivo: emparejar a cada empleado con su jefe.

SELECT
  emp.name AS employee,
  mgr.name AS manager
FROM employees emp
LEFT JOIN employees mgr ON emp.manager_id = mgr.id;

Resultado:

employeemanager
AnnaNULL
BorisAnna
VeraAnna
GrishaBoris
DenisBoris

La tabla es una, pero aparece dos veces en la consulta — como emp y como mgr. Sin alias, la base de datos no puede saber a qué name te refieres.

Subconsultas en FROM — alias obligatorio

Una subconsulta en FROM debe tener un alias:

SELECT t.country, t.cnt
FROM (
  SELECT country, COUNT(*) AS cnt
  FROM users
  GROUP BY country
) t
WHERE t.cnt > 10;

Una subconsulta es una «tabla temporal». Sin un nombre no puedes referenciarla. Tanto PostgreSQL como MySQL dan error: «every derived table must have its own alias».

Alias y orden de ejecución

Gazapo importante: un alias de columna no se puede usar en WHERE.

-- NO FUNCIONA
SELECT salary * 12 AS annual
FROM employees
WHERE annual > 1000000;

Por qué: SQL evalúa WHERE antes de SELECT. En el momento en que se ejecuta WHERE, annual aún no existe. Soluciones alternativas:

-- Opción 1: repite la expresión
WHERE salary * 12 > 1000000

-- Opción 2: subconsulta o CTE
SELECT * FROM (
  SELECT salary * 12 AS annual FROM employees
) t WHERE t.annual > 1000000;

En ORDER BY los alias funcionan — ORDER BY se ejecuta después de SELECT:

SELECT salary * 12 AS annual
FROM employees
ORDER BY annual DESC;  -- OK

Ejemplo más grande: una red social

users:

idname
1Anna
2Boris

posts:

idauthor_idtitlelikes
101My first post12
111Cute cats87
122Borscht recipe45

comments:

idpost_idauthor_idtext
20102Awesome!
21111Thanks for the likes!
22112Cool :)

Objetivo: mostrar «autor de la publicación — título de la publicación — autor del comentario — texto del comentario».

SELECT
  pa.name AS post_author,
  p.title AS post_title,
  ca.name AS comment_author,
  c.text  AS comment_text
FROM posts p
JOIN users pa   ON pa.id = p.author_id
JOIN comments c ON c.post_id = p.id
JOIN users ca   ON ca.id = c.author_id
ORDER BY p.id, c.id;

Resultado:

post_authorpost_titlecomment_authorcomment_text
AnnaMy first postBorisAwesome!
AnnaCute catsAnnaThanks for the likes!
AnnaCute catsBorisCool :)

Alias obligatorios aquí:

  • users aparece dos veces (como autor de la publicación y como autor del comentario) → hacen falta alias distintos pa y ca.
  • La columna name existe tanto en pa como en ca → ambigua sin un prefijo.
  • Los alias de columna (AS post_author, AS comment_author) hacen la salida legible.

Esta consulta simplemente no se puede escribir sin alias.

Errores habituales de principiante

1. Usar un alias de columna en WHERE. No funciona (mira el orden de ejecución). ORDER BY — sí, WHERE — no.

2. Olvidar el alias en una subconsulta en FROM. Error «every derived table must have its own alias».

3. Alias de una letra por todas partes. Con cinco tablas a, b, c, d, e, una semana después no recuerdas cuál es cuál. Usa nombres cortos mnemotécnicos: users u, orders o, payments p.

4. Alias entrecomillados o con espacios. ¿Quieres espacios o una palabra clave en tu alias? PostgreSQL necesita comillas dobles: AS "My Column". Simplemente no lo hagas — usa snake_case.

5. Definir un alias de tabla y aun así escribir el nombre completo. Inútil: FROM employees e ... WHERE employees.id = 1 — el alias está definido pero no se usa. Obtendrás «invalid reference to FROM-clause entry for table 'employees'».

6. El alias choca con una palabra reservada. AS user, AS order pueden causar problemas en algunas bases de datos. Evítalo o entrecomíllalo.

Resumen rápido

  • Un alias es un seudónimo para una tabla o columna, opcionalmente introducido con AS.
  • AS es opcional en ambos contextos.
  • Los alias de columna son visibles en SELECT, ORDER BY, GROUP BY, no en WHERE ni HAVING (orden de ejecución).
  • Los alias de tabla son obligatorios cuando se hace JOIN de tablas con nombres de columna compartidos.
  • Las autouniones son imposibles sin alias.
  • Una subconsulta en FROM debe tener un alias.

Pruébalo tú

Sobre las tablas de ejemplo:

  1. Lista las publicaciones con el autor y el número de comentarios. Usa alias para abreviar.
  2. Autounión sobre employees: empareja a cada jefe con los empleados que le reportan.
  3. Subconsulta en FROM: calcula la valoración media de las publicaciones que tienen más de 50 me gusta. La consulta interior filtra, la exterior promedia.

Los alias son una técnica que mejora notablemente la legibilidad. Conviértelo en un hábito: dales nombres cortos a las tablas en los JOIN.

Practica con ejercicios reales

Resuelve ejercicios en el entrenador de SQL con corrección instantánea y pistas.

Abrir el entrenador