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