Первый полезный запрос
Чему научишься
- писать запросы с явным списком столбцов после
SELECTи фильтром строк черезWHERE - переводить бизнес-вопрос в SQL по маршруту: сущность →
FROM, ограничения →WHERE(сAND), вывод →SELECT, порядок →ORDER BY - объяснять, почему
SELECT *— плохая практика в рабочих запросах - проверять запрос пересказом вслух: пересказ совпал с исходным вопросом — запрос верен по смыслу
Карта изучена — и КВЕРИ меняет правила. До сих пор ты разглядывал архив целиком, как турист; архивист работает иначе. На голопанели гаснет всё, кроме одной таблицы, и появляется задание: задай вопрос так, чтобы в ответе не оказалось ни одной лишней строки и ни одного лишнего столбца.

Выбираем нужные столбцы и строки
Брать всё через * удобно для первого знакомства, но в реальной работе это как принести на кассу весь склад. Обычно тебе нужны конкретные поля: перечисли их через запятую после SELECT.
Со строками так же: вместо всей витрины выбери только нужный сегмент через WHERE. Например, попросим у «Котомаркета» только товары из категории Книги:
Из бизнес-вопроса — в запрос
Настоящие вопросы приходят к архивисту не на SQL: «какие книги дешевле полутора тысяч?», «что из электроники дороже 5000?». Перевод всегда идёт по одному маршруту:
- Сущность → таблица. О чём вопрос: о товарах, покупателях, заказах? «Книги дешевле 1500» — про товары, значит
FROM products. - Ограничения → WHERE. Каждое условие из вопроса — отдельное условие фильтра: категория «Книги», цена меньше 1500.
- Что показать → SELECT. Что человек хочет увидеть в ответе? Название и цену — их и перечисляем, остальное шум.
- Форма ответа → ORDER BY. «От дешёвых к дорогим» — сортировка по цене.
-- «Какие книги дешевле 1500 и сколько они стоят, от дешёвых к дорогим?»
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1500
ORDER BY price;
Несколько условий соединяются словом AND — подробно операторы фильтра разберём в следующей главе.
И обратная привычка хорошего архивиста: прочитай готовый запрос вслух как фразу. «Из товаров взять книги дешевле 1500, показать название и цену, отсортировать по цене» — если пересказ совпал с исходным вопросом, запрос верен по смыслу. Если в пересказе всплыло «все столбцы» или «вся витрина» — вернись и сузь.
Вопрос с собеседования
Вопрос с собеседования: почему SELECT * считается плохой практикой в рабочих запросах?
Сильный ответ: во-первых, лишние данные: сеть и память тратятся на столбцы, которые не нужны, и база теряет возможность ответить только по индексу (index-only scan; — Глава 10). Во-вторых, хрупкость: при добавлении или переименовании столбцов ломаются отчёты и код, рассчитывающий на состав и порядок колонок. Явный список столбцов — это контракт запроса; SELECT * уместен разве что в интерактивном исследовании данных.
SELECT name FROM products WHERE category = 'Книги'?Опись прочитана: ты знаешь, что лежит в пяти таблицах и какими нитями они сшиты. КВЕРИ гасит карту, и на голопанели загорается следующий уровень допуска — терминал чтения.
КВЕРИ: Запомни главное свойство этого места: архив отвечает только на правильно заданные вопросы. Со следующего допуска учимся спрашивать точно.