ИНСТРУКЦИЯ SELECT

 

Общие сведения о предложении SELECT. Все запросы на получение практически любого количества данных из одной или нескольких таблиц выполняются с помощью предложения SELECT. В общем случае результатом реализации предложения SELECT является другая таблица. К этой новой таблице может быть снова применена операция SELECT и т.д., т.е. такие операции могут быть вложены друг в друга.

Предложение SELECT может использоваться как:

самостоятельная команда на получение и вывод строк таблицы, сформированной из столбцов и строк одной или нескольких таблиц (представлений);

- элемент WHERE- или HAVING-условия ("вложенный запрос");

- фраза выбора в командах CREATE VIEW, DECLARE CURSOR или INSERT;

- средство присвоения глобальным переменным значений из строк сформированной таблицы (фраза INTO).

Инструкция SELECT – наиболее мощная из всех SQL-инструкций и, по сути, аналогична таким операторам реляционной алгебры как SELECTion, projection, join.

Инструкция SELECT состоит из шести предложений.

Предложения SELECT и FROM являются обязательными. Четыре остальных включаются в инструкцию только при необходимости. Ниже перечислены функции каждого из предложений.

В предложении SELECT указывается список столбцов, которые должны быть возвращены инструкцией SELECT. Возвращаемые столбцы могут содержать значения, извлекаемые из столбцов таблиц базы данных, или значения, вычисляемые во время выполнения запроса.

В предложении FROM указывается список таблиц, которые содержат элементы данных, извлекаемые запросом.

Предложение WHERE показывает, что в результаты запроса следует включать только некоторые строки. Для отбора строк, включаемых в результаты запроса, используется условие отбора.

Предложение GROUP BY позволяет создать итоговый запрос. Обычный запрос включает в результаты запроса по одной записи для каждой строки из таблицы. Итоговый запрос, напротив, вначале группирует строки базы данных по определенному признаку, а затем включает в результаты запроса одну итоговую строку для каждой группы.

Предложение having показывает, что в результаты запроса следует включать только некоторые из групп, созданных с помощью предложения GROUP BY. В этом предложении, как и в предложении WHERE, для отбора включаемых групп используется условие отбора.

Предложение order by сортирует результаты запроса на основании данных, содержащихся в одном или нескольких столбцах. Если это предложение не указано, результаты запроса не будут отсортированы.

Полный формат инструкции SELECT, применяемой в Oracle имеет вид:

 

SELECT [{DISTINCT | UNIQUE | ALL}]

{[схема.]{[имя_таблицы. | представление. | моментальная_копия.]. имя_столбца}

| выражение [[AS] псевдоним] [, выражение [[AS] псевдоним]…]

| *}

FROM

{имя_таблицы [@связь_БД] [AS OF {SCN | TIMESTAMP} выражение]

| имя_таблицы PARTITION (имя_раздела) [AS OF {SCN | TIMESTAMP} выражение]

| имя_таблицы SUBPARTITION (имя_подраздела) [AS OF{SCN | TIMESTAMP} выражение]

| имя_таблицы SAMPLE[BLOCK] процент_выборки [AS OF{SCN | TIMESTAMP} выражение]

| представление[@связь_БД] [AS OF {SCN | TIMESTAMP} выражение]

| представление PARTITION (имя_ раздела) [AS OF {SCN | TIMESTAMP} выражение]

| представление SUBPARTITION (имя_подраздела) [AS OF {SCN | TIMESTAMP} выражение]

| представление SAMPLE [BLOCK] процент_выборки [AS OF {SCN | TIMESTAMP} выражение]

| моментальная_копия[@связь_БД] [AS OF{SCN | TIMESTAMP} выражение]

| моментальная_копия PARTITION (имя_ раздела) [AS OF {SCN | TIMESTAMP} выражение]

| моментальная_копия SUBPARTITION (имя_подраздела) [AS OF {SCN | TIMESTAMP} выражение]

| моментальная_копия SAMPLE [BLOCK] процент_выборки [AS OF {SCN | TIMESTAMP} выражение]

| (подзапрос)

| имя_таблицы

{[тип_соединения] JOIN имя_таблицы

{ ON условие

|USING (столбец [столбец]…)

|{CROSS JOIN|NATURAL [тип_соединения] JOIN имя_таблицы}

}

[, [псевдоним_таблицы]

[, имя таблицы …]

[WHERE условие]

{[GROUP BY{выражение | {выражение [, выражение …]}

| CUBE (выражение [, выражение …])

| ROLLUP (выражение [, выражение …])

}

GROUPING SETS (

{выражение | {выражение [, выражение …]}

|CUBE (выражение [, выражение …])

|ROLLUP (выражение [, выражение …])

}

[HAVING условие]

[[START WITH условие] CONNECT BY условие]

[{UNION [ALL]] | INTERSECT | MINUS} {подзапрос}

[,{UNION [ALL] | INTERSECT | MINUS} {подзапрос}…]]

[ORDER BY{выражение | позиция | псевдоним} [ASC | DESC]

[, {выражение | позиция | псевдоним} [ASC | DESC] …]

FOR UPDATE[OF] {таблица | представление}.столбец

[{таблица | представление}.столбец ]

[NOWAIT]

 

При описании инструкции используются следующие ключевые слова:

DISTINCT – указывает, что должна быть возвращена только одна копия строки, даже в случае наличия дубликатов строк;

AS - задает псевдоним для столбца или выражения, может отсутствовать;

ALL - указывает, что должны быть возвращены все строки, включаю дубликаты. По умолчанию ALL.

AS OF - обеспечивает работу с данными по состоянию на конкретный номер системного изменения (SCN) или временную метку как указывает выражение;

SAMPLE [BLOCK] -выполняется случайная (или блочная) выборка строк таблицы;

START WITH – указывает строки, выступающие в качестве корневых в иерархическом запросе (если эти ключевые слова пропущены, то все строки таблицы считаются корневыми);

CONNECT BY – определяет отношение между родительскими и дочерними строками иерархии;

INNER - внутреннее соединение (установлено по умолчанию);

RIGHT - правое внешнее соединение;

LEFT - левое внешнее соединение;

FULL - полное внешнее соединение;

ON условие - задает условие соединения, которое не привязано к условию WHERE;

USING - соединение по равенству для столбцов, имеющих одинаковые имена;

CROSS JOIN - перекрёстное соединение, т.е. прямое произведение двух отношений;

NATURAL - естественное соединение по одноименным столбцам двух таблиц с одинаковыми значениями;

JOIN - явное указание на соединение, эквивалентно перечислению таблиц через запятую;

CUBE - группировка на основе всех возможных комбинаций значений предложенного списка отношений;

ROLLUP - группировка на основе значений предложенного списка выражений и сводных строк, возвращённых для каждого выражения наряду с дополнительной строкой общего итога;

GROUPING SETS – задает несколько групп данных для более удобного агрегирования (если указаны только нужные группы, то серверу не приходится выполнять все множество агрегатирований, которые требуют CUBE и ROLLUP);

FOR UPDATE [OF] – означает, что выбранные строки будут заблокированы. Если указывается ключевое слово OF, то будут заблокированы только строки названной таблицы;

NOWAIT – означает, что если таблица уже заблокирована, то сервер Oracle не будет ждать снятия блокировки.

 

 








Дата добавления: 2015-08-26; просмотров: 726;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.