Краткое сравнение Oracle SQL и ANSI SQL - Оператор DELETE

ОГЛАВЛЕНИЕ

 

Оператор DELETE

Оператор DELETE в Oracle полностью соответствует требованиям начального уровня ANSI SQL. Однако имеются некоторые дополнительные возможности:

  1. Ключевое слово FROM не обязательно
  2. использование табличных алиасов для ссылок на обновляемую таблицу в подзапросах
  3. подзапросы в предложении WHERE могут ссылаться на обновляемую таблицу
  4. Оператор DELETE поддерживает удаление из подзапросов
1,2   DELETE emp aaa 
WHERE sal IN (SELECT AVG(sal)
3 FROM emp bbb WHERE aaa.deptno=bbb.deptno)
  • 1. в предложении DELETE отсутствует ключевое слово FROM
  • 2. таблице emp присваивается алиас aaa для последующей ссылки на обновляемую таблицу в подзапросе
  • 3. делается выборка из таблицы emp, из которой делается удаление этим же оператором
  • 4. Оператор:
  •       DELETE FROM emp WHERE job='управляющий'
    аналогичен оператору:
          DELETE FROM (SELECT * FROM emp) WHERE job='управляющий'