Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кожин / Лекции / Лекция 06 select.doc
Скачиваний:
31
Добавлен:
20.03.2016
Размер:
172.03 Кб
Скачать
      1. Фраза where

Позволяет отобрать строки, возвращаемые из таблице по оператору SELECT или строки, обрабатываемые опе­раторами DELETE и UPDATE.

DELETE …WHERE условие

SELECT ...WHERE условие

UPDATE…WHEREусловие

Фраза WHERE предназначена для специфицирования условия. Оператор, содержащий эту фразу, будет работать только со строками, удовлетворяющими условию.

Условие определяется как логическое выражение. Например:

DEPTNO = 30

Операции AND и OR могут использоваться для сос­тавных выражений. Например, выражение:

DEPTNO= 30ANDJOB= 'SALESMAN'

Операция NOT используется для смены значения вы­ражения на противоположное. Например, выражение:

NOT(DEPTNO= 30ANDJOB= 'SALESMAN')

Следующий оператор выбирает все строки, в которых DEPTNO не равен 30:

SELECT * FROM EMP WHERE DEPTNO !=30

А следующий - изменяет все строки, в которых COMM имеет значение null:

UPDATE EMP SET SAL = (1.1*SAL) WHERE COMM IS NULL

И, наконец, последний оператор использует корре­лированный запрос для удаления всех отделов, ко­торые не содержат служащих:

DELETE FROM DEPT A WHERE NOT EXISTS

(SELECT 'TRUE' FROM EMP B WHERE A.DEPTNO = B.DEPTNO)

Для каждой строки таблицы DEPT ORACLE выполняет следующую последовательность шагов:

1. Определяет значение DEPTNO для строки.

2. Использует это значение для определения, су­ществует ли такой DEPTNO в таблице EMP.

3. Если не существует, строка удаляется. Если DEPTNO существует для какой-нибудь из строк таблицы EMP, не удаляет строку.

Команда DELETE использует кор­релированный запрос, так как запрос ссылается на ту же таблицу. 'TRUE' - просто константа, поло­женная по синтаксису и может быть заменена любой другой константой или столбцом таблицы EMP. Опе­рация NOT EXISTS специфицирует, что строка будет удалена, если запрос не вернет ни одной строки.

      1. Фраза where (Встроенный sql)

Ограничение строк, возвращаемых операторами SELECT,DELETEилиUPDATE.

SELECT ...FROM ...WHERE [condition | CURRENT OF cursor_name]

condition логическое выражение, которое может ссылаться на host - пере­менные или массивы (фраза WHERE оператора SELECT не может содержать массивов host - переменных). Условие поиска может включать в себя запрос. См. ниже описание синтаксиса query.

CURRENT OF может использоваться только с DELETE или UPDATE; ссылается на строку, обработанную последней оператором FETCH в указанном курсоре.

Если опущена фраза WHERE, обрабатываются все строки таблицы или обзора. Ссылки на host - пере­менные могут быть использованы везде, где допустимо использование констант.

Если фраза WHERE отсутствует в операторах DELETE или UPDATE, пятый элемент sqlwarn (SQLCA) уста­навливается в 'W' (предупреждение) и выполняются действия по EXEC SQL WHENEVER SQLWARNING.

Если все host - переменные во фразе WHERE являют­ся массивами, результат идентичен том, как будто оператор выполнился по разу для каждой компоненты массива.

Если какая-либо host - переменная во фразе WHERE является массивом, массивами должны быть и все остальные host - переменные.

Если массивы различаются размерностью, будет вы­бираться минимальный (или значение, указанное во фразе FOR) для определения числа повторений опе­ратора, содержащего фразу WHERE.

Фраза WHERE оператора SELECT не может содержать массивов host - переменных.

Соседние файлы в папке Лекции