SELECT определяет форму результата
Простой запрос начинается с выбора столбцов из таблицы. Лучше явно перечислять нужные поля, а не постоянно использовать звёздочку: так запрос понятнее и устойчивее к изменению структуры таблицы. Псевдонимы помогают дать вычисляемым выражениям читаемые имена.
WHERE фильтрует строки до агрегации
Условия сравнения, диапазоны, списки и логические операторы позволяют выбрать нужные записи. Особое внимание требуется NULL: это не обычное значение и его проверяют специальными условиями. Ошибка в логике AND и OR может незаметно вернуть слишком много строк, поэтому сложные выражения полезно группировать скобками.
JOIN связывает таблицы по ключам
Соединение имеет смысл только тогда, когда понятно отношение между таблицами. INNER JOIN оставляет совпавшие строки, а внешние соединения позволяют сохранить строки одной стороны без пары. Перед соединением стоит проверить уникальность ключей: неожиданные дубликаты могут многократно увеличить результат.
GROUP BY превращает строки в показатели
Агрегатные функции считают количество, сумму, среднее, минимум и максимум по группам. После GROUP BY в результирующем наборе можно выводить либо поля группировки, либо агрегированные выражения. Условия для уже сформированных групп задают отдельно от обычной фильтрации строк.
Попробуйте на практике
Составить четыре SQL-запроса к учебным таблицам клиентов и заказов.
- Выведите несколько выбранных столбцов и отсортируйте результат.
- Добавьте фильтр по дате или статусу.
- Соедините клиентов с заказами по ключу.
- Сгруппируйте заказы по клиенту и посчитайте количество.
Как проверить результат. Запросы готовы, если вы можете объяснить, на каком этапе фильтруются строки, как образуется соединение и почему агрегат возвращает именно такое число.
Частые вопросы
Нужно ли учить порядок всех конструкций наизусть?
Полезно понимать логическую последовательность обработки запроса, а синтаксис быстро закрепляется практикой.
Почему JOIN создаёт дубликаты?
Обычно потому, что одной строке слева соответствует несколько строк справа или ключ соединения выбран неверно.
Чем NULL отличается от пустой строки?
NULL означает отсутствие известного значения и требует специальной логики сравнения.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.