Удаление данных. 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;