← К оглавлению занятия
⚡ Минимум для запоминания
SELECT ... FROM ... WHERE ... — базовая выборка.
DISTINCT — уникальные строки.
ORDER BY + LIMIT/OFFSET — сортировка и страницы.
GROUP BY + HAVING — группировка и фильтр групп.
JOIN ... USING (model) — соединение по модели.
IN, подзапросы, MIN/MAX/AVG/COUNT — для сложных условий.
Общий шаблон запроса
SELECT [DISTINCT] column1, column2, aggregate_function(...)
FROM table1
[JOIN table2 USING (column)]
[WHERE condition]
[GROUP BY column1, column2]
[HAVING group_condition]
[ORDER BY column1 [ASC|DESC], ...]
[LIMIT count OFFSET offset];
Команды, операторы и функции
| Конструкция | Описание | Пример |
SELECT | Выборка столбцов | SELECT model, price FROM PC; |
FROM | Указание источника данных | FROM Product |
WHERE | Фильтрация строк | WHERE price < 500 |
DISTINCT | Уникальные строки | SELECT DISTINCT maker FROM Product; |
ORDER BY | Сортировка результата | ORDER BY price DESC |
LIMIT | Ограничение числа строк | LIMIT 10 |
OFFSET | Пропуск первых строк | OFFSET 20 |
GROUP BY | Группировка строк | GROUP BY hd |
HAVING | Фильтрация групп | HAVING COUNT(*) >= 2 |
JOIN | Соединение таблиц | Product JOIN PC USING (model) |
UNION | Объединение результатов запросов | SELECT ... UNION SELECT ... |
IN | Проверка вхождения в список | WHERE cd IN ('12x', '24x') |
COUNT | Количество строк или не-NULL значений | COUNT(model) |
SUM | Сумма значений | SUM(price) |
AVG | Среднее значение | AVG(speed) |
MIN | Минимум | MIN(price) |
MAX | Максимум | MAX(price) |
Когда какой оператор применять
| Задача | Оператор |
| Отфильтровать строки по значению | WHERE |
| Убрать дубли | DISTINCT |
| Отсортировать результат | ORDER BY |
| Вернуть только часть строк | LIMIT / OFFSET |
| Соединить данные из разных таблиц | JOIN |
| Сложить результаты нескольких запросов | UNION |
| Сгруппировать строки и посчитать итоги | GROUP BY + агрегат |
| Отфильтровать результат агрегации | HAVING |
| Проверить вхождение в список | IN |
| Сравнить с результатом другого запроса | Подзапрос |
Полный справочник
→ Справочник SQL