Псевдонимы в SQL
Псевдонимы в SQL (алиасы) кажутся «косметикой», но у них есть подводные камни и тонкости, которые реально влияют на запросы.
Псевдонимы - это временные имена для таблиц или столбцов внутри запроса.
В моем канале На связи: SQL уже есть про это посты: вот этот. Канал я веду с нуля подписчиков. Чтобы показать, что аналитика и SQL это не страшно, а интересно. Присоединяйся, если ты тоже хочешь начать изучать SQL или вспомнить и осознать некоторые нюансы.
SELECT c.name AS customer_name
FROM customers c;
c — алиас таблицы customers
customer_name — алиас для колонки c.name
Внутри результата ты видишь только customer_name.
Где применяются
Сокращение длинных имён
- читабельнее, чем всё время писать orders.id, customers.name
JOIN и self-join
Без алиасов нельзя отличить таблицы при самосоединении:
Агрегация и подзапросы
Алиас часто обязателен:
SELECT avg(salary) AS avg_salary
FROM employees;
Derived tables (подзапросы в FROM)
Тут алиас обязателен:
SELECT sub.department, sub.cnt
FROM ( SELECT department, count(*) cnt
FROM employees
GROUP BY department
) sub;
Где их нельзя применять / ограничения
В том же уровне WHERE
SELECT salary * 1.2 AS new_salary
FROM employees
WHERE new_salary > 5000; -- ❌ Ошибка
Алиасы доступны только в SELECT/ORDER BY, но не в WHERE или GROUP BY.
→ нужно повторно писать выражение или завернуть в CTE.Порядок обработки
SQL выполняется в порядке: FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT.
Алиасы появляются только после SELECT.
Поэтому:в WHERE и GROUP BY алиасы ещё не видны;
в ORDER BY алиасы уже можно использоват
Нюансы, которые часто забывают
Алиасы влияют только на внешний уровень запроса
Они не меняют структуру таблицы.
В EXPLAIN ты увидишь исходные имена столбцов, а не алиасы.В подзапросах алиас обязателен для таблицы
Даже если кажется, что можно без него.
SELECT *
FROM (SELECT 1) -- ❌ Ошибка
SELECT *
FROM (SELECT 1) AS t;
ORDER BY может использовать алиас
Ускоряет жизнь:SELECT salary * 1.2 AS new_salary
FROM employees
ORDER BY new_salary DESC;CTE против алиасов
Если выражение слишком длинное (например, CASE WHEN …), лучше вынести его в CTE вместо алиаса в SELECT → так его можно переиспользовать и в WHERE, и в ORDER BY.Алиасы могут влиять на читаемость, но и запутывать
Пример анти-паттерна:SELECT u.id AS order_id -- ❌ псевдоним вводит в заблуждение
FROM users u;→ плохая идея, потому что вводит читателя в ошибку.
Итог: алиасы — не просто косметика. Это инструмент:
для читаемости;
для самосоединений и подзапросов;
для управления порядком сортировки.
Но они не живут дольше SELECT-а
Подписывайся на мой канал На связи SQL и давай изучать особенности вместе!
