Команда select

Язык SQL допускает три типа синтаксических конструкций, начинающихся с ключевого слова SELECT:

оператор выборки (select statement)

спецификация курсора (cursor specification)

подзапрос (subquery).

Условия:

Для того, чтобы можно было выбрать данные из таблицы, эта таблица должна быть в схеме пользователя, или пользователь должен иметь привилегию SELECT по этой таблице. Для того, чтобы можно было выбрать данные из базовых таблиц представления, владелец схемы, содержащей представление, должен иметь привилегию SELECT по этим базовым таблицам. Системная привилегия SELECT ANY TABLE также позволяет выбирать данные из любой таблицы и базовых таблиц любого представления.

Синтаксис:


query_table_expression_clause::=



sample_clause::=



with_clause::=



table_collection_expression::=



where_clause::=



outer_join::=



hierarchical_query_clause::=



group_by_clause::=



order_by_clause::=



for_update_clause::=



Ключевые слова и параметры:

DISTINCT — возвращает только одно значение для каждого набора одинаковых выбранных значений столбца

ALL — возвращает все выбранные строки, включая все повторяющиеся значения столбцов (принимается по умолчанию)

* — выбирает все столбцы из всех таблиц или представлений, перечисленных после раздела FROM

schema — идентификатор полномочий, обычно совпадающий с именем некоторого пользователя

table.* view.* — выбирает все столбцы из указанной таблицы, представления

Expr — извлекает из таблицы (представления) некоторое определяемое выражение

table view — имя таблицы(представления), из которой происходит выборка данных

c_alias – алиасное имя (псевдоним) извлекаемого столбца, выражения

t_alias – алиасное имя (псевдоним) таблицы

subquery — подзапрос, который сервер обрабатывает тем же самым способом как представление

START WITH CONNECT BY — возвращает строки в иерархическом порядке

WHERE — ограничивает множество строк выборкой тех записей, для которых условие является истинным; если это предложение опускается, сервер возвращает все строки из таблиц

GROUP BY — группирует выбранные строки по группам строк с одинаковым значением указанных полей и возвращает одиночную строку итоговой информации для каждой группы

HAVING — ограничивает выбираемые группы строк такими группами, для которых определяемое условие является истинным; если это предложение опускается, сервер возвращает строки всех групп

UNION [ALL] INTERSECT MINUS — объединяет строки, возвращенные двумя утверждениями SELECT с использованием операции пересечения множеств; для ссылки на столбец вводится псевдоним для его обозначения. Предложение FOR UPDATE не может использоваться с этими операторами

ORDER BY — упорядочивает строки, возвращенные запросом: в Expr — указывается значение выражения, которое определяет правило упорядочивания строк по возрастанию ASC или убыванию DESC. Значением по умолчанию является ASC

FOR UPDATE — блокирует выбранные строки

NOWAIT — возвращает управление пользователю, если команда SELECT пытается блокировать строку, которая уже блокирована другим пользователем; если это предложение опускается, сервер ждет, пока строка не станет доступной и только тогда возвращает результаты команды SELECT

Основой всех синтаксических конструкций, начинающихся с ключевого слова SELECT, является синтаксическая конструкция “табличное выражение”.

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

Наиболее общей является конструкция “ спецификация курсора ”. Курсор — это понятие языка SQL, позволяющее с помощью набора специальных операторов получить построчный доступ к результату запроса к БД. К табличным выражениям, участвующим в спецификации курсора, не предъявляются какие- либо ограничения. При определении спецификации курсора используются три дополнительных конструкции: спецификация запроса, выражение запросов и раздел ORDER BY.

В спецификации запроса задается список выборки (список арифметических выражений над значениями столбцов результата табличного выражения и констант). В результате применения списка выборки к результату табличного выражения производится построение новой таблицы, содержащей то же число строк, но вообще говоря другое число столбцов, содержащих результаты вычисления соответствующих арифметических выражений из списка выборки. Выражение запросов — это выражение, строящееся по указанным синтаксическим правилам на основе спецификаций запросов. Единственной операцией, которую разрешается использовать в выражениях запросов, является операция UNION (объединение таблиц) с возможной разновидностью UNION ALL.

Оператор выборки — это отдельный оператор языка SQL, позволяющий получить результат запроса в прикладной программе без привлечения курсора. Поэтому оператор выборки имеет синтаксис, отличающийся от синтаксиса спецификации курсора, и при его выполнении возникают ограничения на результат табличного выражения. Фактически, и то, и другое диктуется спецификой оператора выборки как одиночного оператора SQL: при его выполнении результат должен быть помещен в переменные прикладной программы. Поэтому в операторе появляется раздел INTO, содержащий список переменных прикладной программы, и возникает то ограничение, что результирующая таблица должна содержать не более одной строки.

Подзапрос — запрос, который может входить в предикат условия выборки оператора SQL.

В начало


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: