Языки программирования

Оператор SQL: DELETE

DELETE — это DM-операция удаления записей из таблицы. Критерий отбора записей для удаления определяется выражением WHERE. В случае, если критерий отбора не определён, выполняется удаление всех записей. Синтаксис:
DELETE FROM <имя таблицы > 
[WHERE <предикат>];
Более быстро операцию удаление всех строк из таблицы можно в Transact-SQL также выполнить с помощью команды:
TRUNCATE TABLE <имя таблицы>
Transact-SQL (T-SQL) — процедурное расширение языка SQL, используемое для программирования на стороне сервера в Microsoft SQL Server и Sybase ASE.

Примеры работы оператора

Пример 1. Требуется удалить из таблицы Laptop все портативные компьютеры с размером экрана менее 15 дюймов.
DELETE FROM Laptop
WHERE screen < 15;
Все блокноты можно удалить с помощью оператора:
DELETE FROM Laptop;
Transact-SQL расширяет синтаксис оператора DELETE, вводя дополнительное предложение FROM:
FROM <источник табличного типа>
При помощи этого предложения можно выполнять соединения таблиц, что логически заменяет использование подзапросов в предложении WHERE для идентификации удаляемых строк. Рассмотрим пример:

Пример 2. Пусть требуется удалить те модели ноутбуков из таблицы Product, для которых нет соответствующих строк в таблице Notebook. Используя стандартный синтаксис, задача решается так:
DELETE FROM Notebook 
WHERE type = 'nb' AND 
 model NOT IN (SELECT model 
 FROM NB);
Предикат type = 'Nb' необходим здесь, чтобы не были удалены также модели принтеров, сканеров и персональных компьютеров.

Эту же задачу можно решить с помощью дополнительного предложения FROM следующим образом:
DELETE FROM Notebook 
FROM Product pr LEFT JOIN 
 NB ON pr.model = NB.model 
WHERE type = 'nb' AND 
 NB.model IS NULL;
Здесь применяется внешнее соединение, в результате чего столбец NB.model для моделей ноутбуков, отсутствующих в таблице NB, будет содержать NULL-значение, что и используется для идентификации подлежащих удалению строк.

Подробное видео:
Самоучитель по SQL