Основы современных баз данных

       

Одиночные операторы манипулирования данными


Каждый из операторов этой группы является абсолютно независимым от какого бы то ни было другого оператора.

Оператор выборки

Для удобства мы повторяем синтаксис этого оператора еще раз:

<select statement> ::=

SELECT [ALL | DISTINCT] <select name>

INTO <select target list> <table expression>

<select target list>::=

<target specification>

[{,<target specification>}...]

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

Оператор поискового удаления

Оператор описывается следующим синтаксическим правилом:

<delete statement: searched> ::=

DELETE FROM <table name>

WHERE [<search condition>]

Таблица T, указанная в разделе FROM оператора DELETE, должна быть изменяемой. На условие поиска накладывается то условие, что на таблицу T не должны содержаться ссылки ни в каком вложенном подзапросе предикатов раздела WHERE.

Фактически оператор выполняется следующим образом: последовательно просматриваются все строки таблицы T, и те строки, для которых результатом вычисления условия выборки является true, удаляются из таблицы T. При отсутствии раздела WHERE удаляются все строки таблицы T.

Оператор поисковой модификации

Оператор обладает следующим синтаксисом:

<update statement: searched> ::=

UPDATE <table name>

SET <set clause: searched>

[{,<set clause: searched>}...]

[WHERE <search conditions>]

<set clause: searched> ::=

<object column: searched> =

{ <value expression> | NULL }

<object column: searched> ::= <column name>

Таблица T, указанная в операторе UPDATE, должна быть изменяемой. На условие поиска накладывается то условие, что на таблицу T не должны содержаться ссылки ни в каком вложенном подзапросе предикатов раздела WHERE.

Оператор фактически выполняется следующим образом: таблица T последовательно просматривается, и каждая строка, для которой результатом вычисления условия поиска является true, изменяется в соответствии с разделом SET. Если арифметическое выражение в разделе SET содержит ссылки на столбцы таблицы T, то при вычислении арифметического выражения используются значения столбцов текущей строки до их модификации.

Операторы окончания транзакции

Текущая транзакция может быть завершена успешно (с фиксацией в базе данных произведенных изменений) путем выполнения оператора COMMIT WORK или аварийно (с удалением из базы данных изменений, произведенных текущей транзакцией) путем выполнения оператора ROLLBACK WORK. При выполнении любого из этих операторов производится принудительное закрытие всех курсоров, открытых к моменту выполнения оператора завершения транзакции.



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