Бран · продюсер «Хроник Пограничья»
Маркетинг говорит, что большие пачки гемов выгоднее маленьких. Я им не верю. Сколько стоит один гем в каждом оффере? Мне нужна табличка: название, цена, гемы и цена за гем.
В прошлом уроке ты вывел таблицу целиком через SELECT *. Брану же нужны четыре столбца, причём одного из них в базе нет: цену за гем никто не хранит, её надо посчитать. Сегодня учимся выбирать столбцы, давать им имена и считать новые прямо в запросе.
Выписка из ведомости
Представь бухгалтерскую ведомость на двадцать столбцов. Начальник просит: «Дай мне только фамилии и зарплаты, и добавь столбец с зарплатой после налога». Ты не переписываешь ведомость целиком. Ты берёшь чистый лист, выписываешь два нужных столбца и в третьем для каждой строки считаешь новое число.
SELECT делает такую выписку. После слова SELECT перечисляешь через запятую, что положить в результат, а после FROM говоришь, из какой таблицы брать строки. Этот список называют списком выборки.
SELECT name, class, level
FROM characters;
name | class | level
-----------+---------+-------
IronSun | warrior | 5
Nyzuka80 | rogue | 3
Rianash | priest | 40
Sara24 | ranger | 2
FireFrost | ranger | 3
...
Столбцы приходят в том порядке, в каком ты их перечислил, а не в каком они лежат в таблице. Если переставить level в начало, он и в результате будет первым.
Почему не всегда звёздочка
SELECT * удобен, чтобы осмотреться. В рабочем запросе лучше перечислять столбцы явно. Причин три. Читателю отчёта не нужны служебные столбцы. Если кто-то добавит в таблицу новый столбец, твой отчёт внезапно поменяет форму. А на больших базах лишние столбцы означают лишнюю работу: об этом поговорим в блоке про производительность.
Считаем прямо в запросе
В списке выборки можно не только называть столбцы, но и считать. Например, цена оффера с НДС 20%:
SELECT title, price_rub, price_rub * 1.2
FROM store_offers;
title | price_rub | ?column?
--------------+-----------+----------
Горсть гемов | 99.00 | 118.800
Мешок гемов | 499.00 | 598.800
Сундук гемов | 999.00 | 1198.800
...
Такое вычисление называют выражением. База берёт каждую строку по отдельности, подставляет её price_rub в формулу и пишет ответ в новый столбец. Работают привычные +, -, *, / и скобки.
Посмотри на заголовок ?column?. База не знает, как назвать посчитанный столбец, и ставит заглушку. Дай ему имя.
урок из курса
Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.