Gymterview
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 выполняется первым, потому что стоит первым в записи.