Таблица, строки и столбцы
Реляционная база хранит данные в таблицах. Столбцы описывают свойства, а строки — отдельные записи. Например, таблица заказов может содержать идентификатор, дату, клиента и сумму. Перед написанием запроса полезно сначала ответить на два вопроса: в какой таблице лежат нужные данные и какие столбцы понадобятся для результата. Это снижает количество случайных запросов и помогает быстрее читать чужой SQL.
SELECT и WHERE
SELECT определяет, какие столбцы вернуть, а WHERE — какие строки оставить. Запрос становится понятнее, если сначала представить итоговую таблицу, а затем формулировать условия. При работе с текстом и датами важно учитывать точный формат значений. Полезно начинать с простого фильтра и постепенно добавлять условия, проверяя результат после каждого шага.
Сортировка и группировка
ORDER BY меняет порядок строк, а GROUP BY объединяет записи по общему признаку для расчёта агрегатов: количества, суммы, среднего и других показателей. Например, можно посчитать число заказов по каждому клиенту. Здесь важно помнить, что после группировки результат уже описывает группы, а не исходные отдельные строки.
JOIN и связи между таблицами
Данные часто разделены: клиенты в одной таблице, заказы в другой. JOIN позволяет соединять их по связанным ключам. Для начала достаточно понимать разницу между внутренним соединением, где остаются совпавшие строки, и левым соединением, где сохраняются все строки из основной таблицы. Ошибки часто появляются, если ключ не уникален и одна строка неожиданно превращается в несколько.
Попробуйте на практике
Составить четыре запроса к условной таблице orders.
- Выведите id, customer_id и amount.
- Добавьте фильтр по сумме больше выбранного значения.
- Отсортируйте результат по сумме по убыванию.
- Сгруппируйте заказы по customer_id и посчитайте количество заказов и общую сумму.
Как проверить результат. Результат достигнут, если вы понимаете, чем отличаются фильтрация строк, сортировка и группировка, и можете объяснить каждый оператор запроса.
Частые вопросы
Нужно ли знать программирование перед SQL?
Нет. SQL имеет собственную декларативную логику и подходит для изучения с нуля.
Что учить после SELECT и WHERE?
Обычно полезнее всего GROUP BY, агрегатные функции и JOIN, потому что они встречаются в большинстве аналитических задач.
Почему JOIN иногда увеличивает количество строк?
Так происходит, когда одной строке из первой таблицы соответствует несколько строк во второй.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.