DELETE ОПЕРАТОР

В этом учебном материале вы узнаете, как использовать Oracle оператор DELETE с синтаксисом, примерами и практическими упражнениями.

Описание

Oracle оператор DELETE используется для удаления одной или нескольких записей из таблицы в Oracle.

Синтаксис

Синтаксис оператора DELETE в Oracle/PLSQL:

DELETE FROM table
[WHERE conditions];

Параметры или аргументы

table

Таблица из которой вы хотите удалить записи.

WHERE conditions

Необязательный. Условия, которые должны быть выполнены для удаляемых записей. Если не предусмотрено никаких условий, то все записи из таблицы будут удалены.

Примечание

Вам не нужно перечислять поля в Oracle DELETE, поскольку вы удалите всю строку из таблицы.

Пример использования с одним условием

Рассмотрим простой Oracle пример DELETE, где в запросе DELETE есть только одно условие.

Например:

Этот пример DELETE удалит все записи из таблицы customers, где last_name является John.

Вы можете проверить количество строк, которые будут удалены. Вы можете определить количество строк, которые будут удалены, выполнив следующее Oracle предложение SELECT, перед выполнением удаления.

Пример использования двух условий

Рассмотрим пример, когда в DELETE просто два условия.

Например:

Этот пример DELETE удалит все записи из таблицы customers, где last_name является Anderson и customer_id больше 25.

Вы можете проверить количество строк, которые будут удалены. Вы можете определить количество строк, которые будут удалены, выполнив следующее предложение SELECT, перед выполнением удаления.

Пример использования условия EXISTS

Вы можете, также выполнять более сложные операции удаления.

Вы можете удалять записи в одной таблице на основе значений в другой таблице. Так как, при удалении, вы не можете перечислить более одной таблицы в FROM, вы можете использовать Oracle условие EXISTS.

Например:

Этот Oracle пример DELETE удалит все записи в таблице suppliers, где есть запись в таблице customers, чьи customer_id больше 25, а customer_id соответствует supplier_id.

Если вы хотите определить количество строк, которые будут удалены, вы можете запустить, перед выполнением удаления, следующее Oracle предложение SELECT.

Часто задаваемые вопросы

Вопрос: Как бы написать запрос DELETE для удаления всех записей из TableA, чьи данные в field1 и field2 НЕ совпадают с данными в fieldx и fieldz из таблицы TableB?

Ответ: Вы можете попробовать что-то подобное для Oracle DELETE:

Практическое упражнение № 1:

На основании таблицы contacts, удалить все записи из таблицы contacts, которые проживают в city 'Las Vegas' и чьи first_name является 'Jane'.

Решение для практического упражнения № 1:

Oracle DELETE, ниже, удалит эти записи из таблицы contacts:

Практическое упражнение № 2:

На основании таблицы contacts, удалить все записи из таблицы contacts, где contact_id больше или равна 5000 и менее 6000.

Решение для практического упражнения № 2:

Oracle DELETE, ниже, удалит эти записи из таблицы contacts:

Или решение можно написать, используя условие BETWEEN следующим образом: