Как переименовать столбец в результате запроса SQL (AS и алиасы)?
В выводе вычисляемого столбца у меня заголовок выглядит как COUNT(*) или price * 1.2, что некрасиво. Как переименовать столбец в результате запроса? Что такое алиас и обязательно ли слово AS?
2 ответа
Дать столбцу понятное имя в выводе помогает алиас через ключевое слово AS:
SELECT
COUNT(*) AS total_orders,
price * 1.2 AS price_with_tax,
name AS customer_name
FROM orders;
Теперь в результате колонки будут называться total_orders, price_with_tax, customer_name.
Слово AS необязательно — можно просто поставить имя через пробел, результат тот же:
SELECT COUNT(*) total_orders FROM orders;
Но с AS читается яснее, и большинство стилей кода рекомендуют его писать.
Если в алиасе нужны пробелы или спецсимволы — берите его в двойные кавычки (Postgres/стандарт) или обратные кавычки/квадратные скобки (MySQL/SQL Server):
SELECT price * 1.2 AS "Цена с НДС" FROM products;
Алиасы бывают и для таблиц, что сокращает JOIN-ы:
SELECT o.id, c.name
FROM orders AS o
JOIN customers AS c ON o.customer_id = c.id;
Важная тонкость: алиас столбца из SELECT обычно нельзя использовать в WHERE (он вычисляется позже), но можно в ORDER BY и GROUP BY в большинстве СУБД. Например, ORDER BY price_with_tax сработает, а WHERE price_with_tax > 100 чаще всего — нет.
Запомните порядок выполнения, и станет ясно, где алиас доступен: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. Алиас рождается на шаге SELECT, поэтому всё, что идёт до (WHERE, обычно и GROUP BY/HAVING) его «не видит», а ORDER BY идёт после и видит. Если очень нужен вычисляемый столбец в WHERE — повторите всё выражение или заверните запрос в подзапрос.