Skip to content

Удаление данных. DELETE

Данный оператор предназначен для удаления строк из таблицы.

В самом простом варианте он используется для удаления всех данных из таблицы:

sql
-- Удалить все данные из таблицы employees
delete
from employees
-- Удалить все данные из таблицы employees
delete
from employees

Для удаления строк, попадающих под определенный критерий, как и в случае с оператором UPDATE, прописываем эти условия в WHERE части:

sql
-- Удалить данные по сотруднику с id = 20
delete
from employees emp
where emp.id = 20;

-- Удалить данные по сотрудникам старше 70 лет
delete
from employees emp
where emp.age > 70;
-- Удалить данные по сотруднику с id = 20
delete
from employees emp
where emp.id = 20;

-- Удалить данные по сотрудникам старше 70 лет
delete
from employees emp
where emp.age > 70;

Удаление данных из связанных таблиц

Если в БД есть таблицы, которые содержат строки, ссылающиеся на удаляемые, Oracle выдаст ошибку ORA-02292 Constraint violation - child records found.

В таком случае нужно сначала удалить данные из всех дочерних таблиц, и только потом удалить данные из главной таблицы:

sql
-- Сначала удаляем данные страховой карточки по сотруднику с id = 10
delete
from insurance_card ic
where ic.emp_id = 10;

-- И только после этого удаляем данные по самому сотруднику
delete
from employees emp
where emp.id = 10;
-- Сначала удаляем данные страховой карточки по сотруднику с id = 10
delete
from insurance_card ic
where ic.emp_id = 10;

-- И только после этого удаляем данные по самому сотруднику
delete
from employees emp
where emp.id = 10;