Вы находитесь на странице: 1из 4

DELETE ОПЕРАТОР

Описание
Oracle оператор DELETE используется для удаления одной или нескольких записей
из таблицы в Oracle.
Синтаксис
Синтаксис оператора DELETE в Oracle/PLSQL:
DELETE FROM table [WHERE conditions];
Параметры или аргументы
Table - Таблица из которой вы хотите удалить записи.
WHERE conditions - Необязательный. Условия, которые должны быть выполнены
для удаляемых записей. Если не предусмотрено никаких условий, то все записи из
таблицы будут удалены.
Примечание
Вам не нужно перечислять поля в Oracle DELETE, поскольку вы удалите всю строку
из таблицы.
Пример использования с одним условием
Рассмотрим простой Oracle пример DELETE, где в запросе DELETE есть только
одно условие.
Например: Oracle PL/SQL
 В таблицу SALES_REPRESENTATIVES добавить новую запись:
insert into sales_representatives values ('sr04', '4@mail.ru',
'Олеся', 'Яковлева', 89185643412, 15, 'sr01')
 Вывести информацию из таблицы Customers

 select * from sales_representatives;


 Подсчитать количество строк, которые будут удалены. Смотрим по
коду продавца sr04
SELECT count(*) FROM SALES_REPRESENTATIVES
WHERE SRE_ID = 'sr04';
 Удалить продавца с кодом sr04

 delete from sales_representatives where SRE_ID='sr04'


Пример использования двух условий
Рассмотрим пример, когда в DELETE два условия.
Например: Oracle PL/SQL
 Удалить из таблицы sales_representatives продавцов, у которых номер
sr04 и фамилия Иевлев.

 insert into sales_representatives values ('sr04',


'4@mail.ru', 'Олеся', 'Яковлева', 89185643412, 15, 'sr01')

 insert into sales_representatives values ('sr05',


'5@mail.ru', 'Александр', 'Иевлев', 89185643413, 15, 'sr01')

 DELETE FROM SALES_REPRESENTATIVES


WHERE SRE_ID = 'sr04' OR LAST_NAME = 'Иевлев';

 Удалить из таблицы sales_representatives продавца с номером sr04 и


фамилией Иевлев.
 insert into sales_representatives values ('sr04', '4@mail.ru',
'Павел', 'Иевлев', 89185643412, 15, 'sr01')

insert into sales_representatives values ('sr05', '5@mail.ru',


'Александр', 'Иевлев', 89185643413, 15, 'sr01')
 delete FROM SALES_REPRESENTATIVES WHERE
SRE_ID = 'sr04' and LAST_NAME = 'Иевлев';

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


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

 Создать Teams_copy.

CREATE TABLE Teams_copy


(
TEM_ID VARCHAR2(4),
NAME VARCHAR2(20) NOT NULL,
CONSTRAINT TEAMS_copy_PK PRIMARY KEY
(TEM_ID)
)

 Заполнить таблицу Teams_copy данными из таблицы Teams.

INSERT INTO teams_copy (TEM_ID, NAME)


SELECT TEM_ID, NAME
FROM teams;
 Вывести информацию из таблицы teams_copy

select * FROM teams_copy;

 Изменить пару кодов в таблицу teams_copy.

 Удалить значения из таблицы teams_copy, у которых ID совпадает с


ID из таблицы teams.

DELETE FROM teams_copy


WHERE EXISTS
(SELECT *
FROM teams
WHERE teams.TEM_ID = teams_copy.TEM_ID);
 Удалить значения из таблицы teams_copy, у которых ID не
совпадает с ID из таблицы teams

DELETE FROM teams_copy

WHERE NOT EXISTS

(SELECT *

FROM teams

WHERE teams.TEM_ID = teams_copy.TEM_ID);