Язык запросов SQL

         

Уточняющие предложения и их назначение



Таблица 9.1. Уточняющие предложения и их назначение



Уточняющее предложение Для чего предназначено
from Указывает, из каких таблиц брать данные
where Фильтрует строки, которые не соответствуют условию поиска
group by Группирует строки в соответствии со значениями в столбцах группирования
having Фильтрует группы, которые не соответствуют условию поиска
order by Сортирует результаты предыдущих предложений перед получением
окончательного вывода

Если используется больше чем одно из этих предложений, то они должны располагаться в следующем порядке:

SELECT список_столбцов

FROM список_таблиц

    [WHERE условие_поиска]

    [GROUP BY столбец_группирования]

    [HAVING условие_поиска]

    [ORDER BY условие_упорядочивания] ;

Ниже описывается, как работают уточняющие предложения.

  • Предложение WHERE — это фильтр, который выбирает строки, удовлетворяющие условию поиска, и отбрасывает все остальные.
  • Предложение GROUP BY создает группы из строк, отобранных с помощью предложения WHERE, каждая из которых соответствует какому-либо значению из столбца группирования.
  • Предложение HAVING — это другой фильтр, который обрабатывает каждую из групп, созданных с помощью предложения GROUP BY, и выбирает те из них, которые удовлетворяют условию поиска, отбрасывая все остальные.
  • Предложение ORDER BY сортирует все, что остается после того, как все предыдущие предложения проведут обработку таблицы (или таблиц).

Квадратные скобки ([]) означают, что предложения WHERE, GROUP BY, HAVING и ORDER BY не являются обязательными.

SQL выполняет эти предложения в следующем порядке: FROM, WHERE, GROUP BY, HAVING и SELECT. Предложения работают по принципу конвейера, когда каждое из них получает результат выполнения предыдущего предложения, обрабатывает этот результат и передает то, что получилось, следующему предложению. Если этот порядок выполнения переписать в виде функций, то он будет выглядеть следующим образом:

SELECT (HAVING (GROUP BY (WHERE (FROM...) ) ) )

Предложение ORDER BY выполняется уже после SELECT. Оно может обращаться только к тем столбцам, которые перечислены в списке, находящемся после SELECT. К другим же столбцам из таблиц, перечисленных в предложении FROM, предложение ORDER BY обращаться не может.



Содержание раздела