Однотабличные запросы в большинстве своем являются простыми, и смысл такого запроса обычно можно легко понять, просто прочитав инструкцию SELECT
. Однако по мере возрастания сложности запроса появляется необходимость в более точном "определении" результатов, которые будут возвращены данной инструкцией SELECT
. Ниже описана процедура генерации результатов SQL-запроса, включающего в себя предложения, описанные в предыдущих постах.
Предыдущие статьи:
- Простейщие запросы SQL: оператор SELECT
- Вычисления в SQL запросах Select
- Выборка всех данных из таблицы
- SELECT DISTINCT - выборка уникальных значений
- WHERE: отбор по условию в операторе SELECT
- ORDER BY: сортировка в операторе SELECT
Как видно из описания, результаты запроса, возвращенные инструкцией SELECT
, получаются при поочередном применении входящих в инструкцию предложений. Вначале применяется предложение FROM
(выбирает таблицу, содержащую гребуемые данные), затем — WHERE
(по определенному критерию отбирает из таблицы строки), далее — SELECT
(создает указанные столбцы результатов запроса и при необходимости удаляет повторяющиеся строки) и, наконец, ORDER by
(сортирует результаты запроса).
Итак, при генерации результатов запроса к одной таблице выполняются следующие действия.
- Взять таблицу, указанную в предложении
from
. - Если имеется предложение
WHERE
, применить заданное в нем условие отбора к каждой строке таблицы и оставить только те строки, для которых это условие выполняется, т.е. имеет значениеTRUE
; строки, для которых условие отбора имеет значениеFALSE
илиnull
, — отбросить. - Для каждой из оставшихся строк вычислить значение каждого элемента в списке возвращаемых столбцов и создать одну строку таблицы результатов запроса. При каждой ссылке на столбец используется значение столбца для текущей строки.
- Если указано ключевое слово
DISTINCT
, удалить из таблицы результатов запроса все повторяющиеся строки. - Если имеется предложение
ORDER BY
, отсортировать результаты запроса. Строки, сгенерированные описанной процедурой, составляют результаты запроса.
Эти "правила" обработки запросов SQL в следующих статьях будут неоднократно расширены, чтобы охватить остальные предложения инструкции SELECT
.