Занятие 29. Отработка основных операторов. Часть 1
⚡ Кратко: суть темы
Повторяем операторы SQL, которые используются чаще всего: сортировка, ограничение, уникальные значения, агрегация, группировка, JOIN и UNION.
ORDER BY— сортировка;LIMIT/OFFSET— постраничный вывод.DISTINCT— уникальные строки.GROUP BYгруппирует,HAVINGфильтрует группы.JOIN— горизонтальное объединение таблиц;UNION— вертикальное.
📖 Сортировка результатов с помощью ORDER BY
Оператор ORDER BY используется для сортировки результатов запроса по одному или нескольким столбцам. По умолчанию сортировка производится по возрастанию (ASC); для убывания указывается DESC.
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
Сортировка выполняется после фильтрации и группировки, но перед LIMIT.
📖 Операторы LIMIT и OFFSET
LIMIT ограничивает количество возвращаемых строк. OFFSET пропускает указанное количество строк от начала результата. Вместе они реализуют постраничный вывод (pagination).
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name
LIMIT number_of_rows OFFSET offset_value;
Например, для вывода второй страницы по 10 строк: LIMIT 10 OFFSET 10.
📖 Выбор уникальных значений с помощью DISTINCT
DISTINCT удаляет полные дубликаты строк из результата запроса. Его можно применять к одному или нескольким столбцам.
SELECT DISTINCT city FROM customers;
SELECT DISTINCT city, country FROM customers;
Важно: COUNT(DISTINCT column) считает уникальные не-NULL значения.
📖 Агрегирующие функции и GROUP BY
Агрегирующие функции выполняют вычисления над набором строк и возвращают одно итоговое значение. Основные функции:
COUNT(*)— количество строк.COUNT(column)— количество не-NULLзначений.SUM(column)— сумма.AVG(column)— среднее (игнорируетNULL).MIN(column)— минимум.MAX(column)— максимум.
GROUP BY группирует строки с одинаковыми значениями в указанных столбцах. Агрегирующая функция применяется к каждой группе отдельно.
SELECT city, COUNT(*) AS customer_count
FROM customers
GROUP BY city;
📖 Фильтрация групп через HAVING
HAVING применяется после GROUP BY и фильтрует группы по результатам агрегатных функций. WHERE для этого не подходит, потому что выполняется до группировки.
SELECT city, COUNT(*) AS customer_count
FROM customers
GROUP BY city
HAVING COUNT(*) > 5;
Правило: GROUP BY может быть без HAVING, но HAVING без GROUP BY используется редко и фильтрует всю выборку как одну группу.
📖 Операторы JOIN и UNION
JOIN
JOIN соединяет таблицы горизонтально по условию.
INNER JOIN— только совпадающие строки.LEFT JOIN— все строки левой таблицы + совпадения из правой.RIGHT JOIN— все строки правой таблицы + совпадения из левой.CROSS JOIN— декартово произведение.FULL OUTER JOIN— все строки обеих таблиц (не поддерживается в MySQL напрямую).
UNION
UNION объединяет результаты двух и более SELECT вертикально. Все запросы должны иметь одинаковое количество столбцов и совместимые типы.
UNION— удаляет дубликаты.UNION ALL— сохраняет все строки, быстрее.
📖 Порядок выполнения SQL-запроса
Порядок выполнения операторов отличается от порядка написания:
FROM— выбор таблиц и соединений.WHERE— фильтрация строк.GROUP BY— группировка.HAVING— фильтрация групп.SELECT— выбор столбцов и вычисления.DISTINCT— удаление дубликатов.ORDER BY— сортировка.LIMIT/OFFSET— ограничение результата.