Введение в стандарты языка баз данных SQL


Одиночные операторы


Основной набор одиночных операторов манипулирования данными и смысл этих операторов в SQL/92 не изменился (или незначительно изменился) по сравнению с SQL/89.

Одиночный оператор выборки в SQL/92 имеет следующий синтаксис:

<select statement: single row> ::= SELECT [ <set quantifier> ] <select list> INTO <select target list> <table expression> <select target list> ::= <target specification> [ { <comma> <target specification> }... ]

Смысл этого оператора, если не вдаваться в формализмы стандарта, ничем не отличается от смысла оператора одиночной выборки SQL/89: табличное выражение должно вырабатывать таблицу, состоящую ровно из одной строки, причем число столбцов в этой таблице должно совпадать с числом элементов в списке целей выборки (selecttargetlist).

Оператор поискового удаления строк имеет точно такой же синтаксис, что и в SQL/89:

<delete statement: searched> ::= DELETE FROM <table name> [ WHERE <search condition> ]

Как обычно, основные расширения касаются более мощных возможностей спецификации условия поиска. Кроме того:

  1. Если текущая транзакция выполняется в режиме только чтения, и таблица, из которой удаляются строки, не является временной, возбуждается исключительное условие.
  2. Пометка строк для удаления производится следующим образом:

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

      (b) заданное условие поиска применяется для каждой строки указанной таблицы, и каждая строка, для которой условие поиска вычисляется в true, помечается для удаления.

  3. Как и в случае позиционных операторов обновления, если для некоторой строки обнаруживается, что она уже помечена для обновления (удаления или модификации) другим оператором (позиционным или поисковым), то в условии завершения оператора поискового удаления возвращается предупреждение.
  4. Все строки, помеченные для удаления, реально удаляются в конце оператора до проверки какого-либо ограничения целостности.
  5. Если не удалена ни одна строка, вырабатывается условие завершения "нет данных".




- Начало -  - Назад -  - Вперед -