Ответ
Стандартный SQL-запрос для выборки данных (SELECT
) состоит из нескольких ключевых блоков, которые пишутся в одном порядке, а выполняются СУБД в другом.
Синтаксис (порядок написания):
SELECT [DISTINCT] column1, column2
FROM table_name
JOIN other_table ON join_condition
WHERE condition
GROUP BY column_name
HAVING condition
ORDER BY column_name [ASC|DESC]
LIMIT count OFFSET-skip;
Назначение блоков:
SELECT
: Указывает, какие столбцы вернуть в результате.FROM
: Определяет основную таблицу для выборки.JOIN
: Объединяет строки из двух или более таблиц на основе связанного столбца.WHERE
: Фильтрует записи, оставляя только те, что соответствуют условию.GROUP BY
: Группирует строки с одинаковыми значениями в сводные строки.HAVING
: Фильтрует сгруппированные данные. В отличие отWHERE
, работает после агрегации.ORDER BY
: Сортирует результирующий набор.LIMIT / OFFSET
: Ограничивает количество возвращаемых строк и указывает, сколько строк пропустить.
Логический порядок выполнения запроса (как его "видит" база данных):
FROM
/JOIN
: Формирование исходного набора данных.WHERE
: Первичная фильтрация строк.GROUP BY
: Агрегация данных.HAVING
: Фильтрация агрегированных данных.SELECT
: Выборка нужных столбцов.ORDER BY
: Сортировка результата.LIMIT
/OFFSET
: Ограничение вывода.