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-значение, что и используется для идентификации подлежащих удалению строк.
Подробное видео:
Подробное видео: