Оператор UPDATE
Оператор UPDATE в Oracle полностью соответствует требованиям начального уровня ANSI SQL. Однако имеются некоторые дополнительные возможности. Если отбросить возможности предназначенные для работы с объектными таблицами вот они:
Проиллюстрируем эти возможности на примере:
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 выполнит запрос.