junior
Каков общий синтаксис оператора SELECT?
SELECT — оператор DML, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию. Это наиболее часто используемый оператор SQL, и понимание порядка его клауз критически важно для написания корректных запросов.
Пример
SELECT
[DISTINCT | DISTINCTROW | ALL]
select_expression, ...
FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | column | formula}]
[HAVING where_definition]
[ORDER BY {unsigned_integer | column | formula} [ASC | DESC], ...]
[LIMIT count [OFFSET offset]]
Логический порядок выполнения клауз
Порядок, в котором СУБД логически обрабатывает запрос, отличается от порядка записи:
| Шаг | Клауза | Что делает |
|---|---|---|
| 1 | FROM / JOIN |
Определяет источник данных |
| 2 | WHERE |
Фильтрует строки |
| 3 | GROUP BY |
Группирует строки |
| 4 | HAVING |
Фильтрует группы |
| 5 | SELECT |
Выбирает столбцы и вычисляет выражения |
| 6 | DISTINCT |
Удаляет дубликаты |
| 7 | ORDER BY |
Сортирует результат |
| 8 | LIMIT / OFFSET |
Ограничивает количество строк |
Этот порядок объясняет, почему алиасы из SELECT нельзя использовать в WHERE (WHERE выполняется раньше), но можно в ORDER BY.
На собеседовании: кроме синтаксиса, важно знать логический порядок выполнения. Частая ошибка — думать, что
SELECTвыполняется первым, потому что стоит первым в записи.