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 lecturaReferenceSQL · 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:

id first_name last_name salary
1 Anna Ivanova 4000
2 Boris Petrov 2700
3 Vera Sidorova 5000

Consulta:

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

Resultado:

given_name annual_salary
Anna 48000
Boris 32400
Vera 60000

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:

id name manager_id
1 Anna NULL
2 Boris 1
3 Vera 1
4 Grisha 2
5 Denis 2

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:

employee manager
Anna NULL
Boris Anna
Vera Anna
Grisha Boris
Denis Boris

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:

id name
1 Anna
2 Boris

posts:

id author_id title likes
10 1 My first post 12
11 1 Cute cats 87
12 2 Borscht recipe 45

comments:

id post_id author_id text
20 10 2 Awesome!
21 11 1 Thanks for the likes!
22 11 2 Cool :)

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_author post_title comment_author comment_text
Anna My first post Boris Awesome!
Anna Cute cats Anna Thanks for the likes!
Anna Cute cats Boris Cool :)

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