Краткое сравнение Oracle SQL и ANSI SQL Страница 3. Оператор UPDATE
|
Страница 3 из 8 Оператор UPDATE Оператор UPDATE в Oracle полностью соответствует требованиям начального уровня ANSI SQL. Однако имеются некоторые дополнительные возможности. Если отбросить возможности предназначенные для работы с объектными таблицами вот они: - использование табличных алиасов для ссылок на обновляемую таблицу в подзапросах
- подзапросы в правой части предложения SET в отличие от только выражений в ANSI SQL
- список обновляемых колонок в левой части предложения SET, в отличии от одной колонки в ANSI SQL
- подзапросы в предложении SET или WHERE могут ссылаться на обновляемую таблицу
- Оператор UPDATE поддерживает обновление подзапросов
Проиллюстрируем эти возможности на примере: 1 UPDATE emp aaa 2 SET deptno =(SELECT deptno FROM dept WHERE loc='Москва'), 3 SET (sal,comm)=(SELECT 1.1*AVG(sal),1.5*AVG(comm) 4 FROM emp bbb WHERE aaa.deptno=bbb.deptno)
- 1. таблице emp присваивается алиас aaa для последующей ссылки на обновляемую таблицу в подзапросе
- 2. значение столбца deptno берется из подзапроса, возвращающего одно значение
- 3. значение столбцов sal и col ,берется из подзапроса, возвращающего два значения
- 4. делается выборка из таблицы emp, которая обновляется этим же оператором
5 UPDATE emp SET comm=NULL WHERE job='управляющий'
этот запрос будет аналогичен следующему запросу: UPDATE (SELECT * FROM emp )SET comm=NULL WHERE job='управляющий'
- 5. в данном примере Oracle будет обновлять временное представление SELECT * FROM emp. После предложения UPDATE в круглых скобках может следовать любой оператор SELECT. На основе этого оператора строится временное представление. Если это представление удовлетворяет условиям на обновляемые представления Oracle выполнит запрос.
|