Материал: Graber_Martin_-_SQL_dlya_prostykh_smertnykh_-_2014

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Приложение D. Справка 110 синтаксису и командам

INSERT

Синтаксис

INSERT INTO <имя таблицы> [ (<список имен столбцов>) ]

VALUES (<список значений>) 1 <запрос>;

INSERT создает один или более новых столбцов в таблице, имя которой указано в команде. Если используется предложение VALUES, то значения, перечисленные в <списке значений>, вставляются в таблицу, имя которой указано в команде. Если в ко­ манде имеется запрос, то каждая строка его результата вставляется в таблицу, имя ко­ торой указано в команде. Если опущен <список и.J11ен столбцов>, то по умолчанию предполагается полный список имен столбцов таблицы, порядок перечисления имен полей определяется описанием структуры таблицы.

OPENCURSOR

Синтаксис

ЕХЕС SQL OPEN CURSOR <имя курсора> <SОL-терм>

OPEN CURSOR выполняет запрос, связанный с <имене.л1 курсора>. Выходные дан­

ные после выполнения этой команды можно получить построчно с помощью команды

FETCH (по одной строке в результате выполнения одной команды FETCH).

REVOKE (*не соответствует стандарту *)

Синтаксис

REVOKE { ALL [PRIVILEGES]

<привилегия>., .. } [ON <имя таблицы>]

FROM { PUBLIC

<идентификатор полномочий>. , .. };

'<Привилегия> - любая привилегия из числа тех, что указаны в команде GRANT. Команду REVOKE может выполнить тот же пользователь, который выполнял соответ­ ствующую команду GRANT (одну или несколько). Предложение ON используется в том случае, когда привилегия специфична для конкретного объекта.

350

КомандыSQL

ROLLBACK (WORK)

Синтаксис

ROLLBACK WORK;

Команда отменяет все изменения, выполненные в базе данных за время текущей

транзакции, а также заканчивает текущую транзакцию и начинает новую.

SELECT

Синтаксис

SELECT { [OISTINCT ALL] <выражение, содержащее значения>., .. } 1 •

[INTO <список переменных включающего языка> (•только для

встроенного варианта использования•}]

FROM <ссылка на таблицу>., ..

[WHERE <предикаТ>]

[GROUP ВУ <столбец, по которому выполняется группирование>., .. ]

[HAVING <предикат>]

[ORDER ВУ <столбец, по которому выполняется

упорядочение> [ASC 1 DESC]., .. ];

Предложение образует запрос и выводит значения из базы данных (см. главы 3-14).

Для неrо действуют следующие правила и определения.

•Если ни ALL ни DISТINCT не указаны, то предполагается ALL.

•<Выражение, содержащее значения> содержит <спецификатор столбца>, <функцию агрегирования>, <нестандарпшую функцию>, <константу>, либо любую их комбинацию с использованием операторов, формирующих правиль­

ное выражение.

•<Ссылка на таблицу> состоит из имени таблицы, включающего префикс вла­ дельца, если текущий пользователь не является ее собственником, либо синони­ ма (* решение, отличное от стандарта *) таблицы. Таблица, на которую выполнена ссылка, может быть либо базовой таблицей, либо представлением. Можно также указать алиас, который является синонимом используемой табли­ цы только на время выполнения текущей команды. Имя таблицы или синоним могут быть отделены от алиаса с использованием одного или нескольких <раз­ делителей>.

•Если употребляется GROUP ВУ, то все <спецификаторы столбцов>, применяе­ мые в предложении SELECT, могут использоваться как <столбцы, по которым

выполняется группирование>, независимо от того, входят ли они в состав

<функций агрегирования>. Все <столбцы, по которьш выполняется группиро-

351

Приложение D. Справка по синтаксису и командам

вание> должны быть представлены в <выражении, содержаще.м значения> предложения SELECT. Для каждой отдельной комбинации значений из <столб­

цов, по которы111 осуществляется группирование> в результат включается одна

и только одна строка.

•Если используется НАVING, то <предикат> применяется к каждой строке ре­ зультата, формируемого в соответствии с предложением GROUP ВУ, если ре­

зультат применения <предиката> для данной строки - "истина", то эта строка

включается в состав выходных данных.

•Если используется ORDER ВУ, выходные данные имеют определенную после­ довательность вывода. Каждый <идентификатор столбца> ссылается на от­ дельный элемент <выражения, содержащего значения>, указанного в предложении SELECT. Если <выражение, содержащее значения> является спецификатором столбца, то <идентификатор столбца> совпадает со <специ­

фикатором столбца>. В противном случае <идентификатор столбца> являет­

ся положительным целым числом, указывающим расположение в <выражении,

содержащеw значения> соответствующего предложения SELECT. Выходные данные будут упорядочены в соответствии с предложением ORDER ВУ. В пре­ делах одного столбца данные упорядочены по возрастанию, если не указано ключевое слово DESC. <Идентификатор столбца>, указанный в предложении ORDER ВУ первым, имеет преимущество перед остальными в завершающей

последовательности строк выходных данных.

Предложение SELECT оценивает каждую возможную строку-кандидат таблицы (таблиц), полученную независимо. Строка-кандидат определяется следующим обра­

зом:

• Если включена только одна <ссылка на таблицу>, каждая строка этой таблицы

рассматривается как строка-кандидат.

•Если включено более одной <ссылки на таблицу>, то каждая строка каждой таблицы комбинируется со всеми комбинациями строк из других таблиц. Каж­ дая такая комбинация рассматривается как строка-кандидат.

Для каждой строки-кандидата значения подставляются в <предикат>, заданный в

предложении WHERE; предикат принимает одно из значений: true, false, unknown.

Если не используется GROUP ВУ, каждое <выра.жение, содержащее значения> при­ меняется к каждой строке-кандидату, значения которой делают <предикат> истин­ ным; результат этой операции добавляется к строкам выходных данных. Если используется GROUP ВУ, то строки-кандидаты комбинируются с использованием аг­ регатных функций. Если никакой предикат не указан, то каждое <выражение, содер­

жащее значения> применяется к каждой строке-кандидату или к каждой группе. Если

указано DISТINCT, то повторяющиеся строки исключаются из результата.

352

КомандыSQL

UNION

Синтаксис

<запрос> { UNION [ALL] <запрос> }... ;

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

размеру.

UPDATE

Синтаксис

UPDATE <иия таблицы>

SET { <иия столбца>= <выражение, содержащее значения>}., ..

{[ WHERE <предикат> ] ; }

{[ WHERE CURRENT OF <иия курсора> ]

<SОL-тери> ] }

UPDATE выполняет замену значений столбцов, имена которых указаны в предло­ жении SET, соответствующим значением из <выражения, содержащего з11ачения>. Если в предложении WHERE указан <предикат>, то замена значений выполняется только в тех строках таблицы, на которых <предикат> принимает значение "истина". Если WHERE содержит предложение CURRENT OF, то происходит замена значений в текущей строке таблицы значениями из текущей строки курсора. Форма WHERE CURRENT OF обычно используется только во встроенном SQL и только с применени­ ем курсора. Если отсутствует предложение WHERE, во всех строках выполняется за­

мена.

WHENEVER

Синтаксис

ЕХЕС SQL WHENEVER <SОL-условие> <действие> <SОL-тери>

<SОL-условие> : : = SQLERROR 1 NOT FOUND 1 SQLWARNING

(в официальный стандарт не входит)

<действие> : : = CONТINUE 1 GOTO <адресат> GO ТО <адресаТ>

<адресат>:: =зависит от включающего языка.

353

Е

w ~ Ь1] 1] ffil ив

Таблицы,

используеJJ.tые в примерах

Источник: https://studfile.net/preview/16418473/