Опубликован: 11.12.2006 | Уровень: специалист | Доступ: платный

Лекция 20: Расширенное описание T-SQL

Оператор DELETE

Оператор DELETE используется для удаления строки или строк из таблицы или представления. DELETE не влияет на определение таблицы; он просто удаляет из таблицы строки данных. Ниже показан синтаксис для оператора DELETE:

DELETE [FROM] имя_таблицы | имя_представления
  [FROM источники_для_таблицы] WHERE условие_поиска

Первое ключевое слово FROM не является обязательным, как и второе предложение FROM. Строки не удаляются из источников для таблицы во втором предложении FROM ; они удаляются только из таблицы или представления, указанного после DELETE.

Удаление отдельных строк

Используя предложение WHERE вместе с DELETE, вы можете указывать определенные строки для удаления из таблицы. Например, чтобы удалить из таблицы items все строки со значением toys в колонке item_category, выполните следующий оператор:

DELETE FROM items
WHERE item_category = 'toys'
GO

Этот оператор удаляет из нашей таблицы items одну строку.

Вы можете использовать второе предложение FROM с одним или несколькими источниками для таблицы, чтобы указать другие таблицы и представления, которые можно использовать в условии поиска WHERE. Например, чтобы удалить из таблицы items строки, соответствующие строкам в таблице two_newest_items, выполните следующий оператор:

DELETE items
FROM two_newest_items 
WHERE items.item_id = two_newest_items.item_id 
GO

Отметим, что в этом операторе мы опустили первое необязательное ключевое слово FROM. Первые две строки таблицы two_newest_items содержат в колонке item_id значения 2 и 3. Таблица items содержит в колонке item_id значения 1 и 2. Поэтому удаляется строка со значением item_id, равным 2 (соответствующая условию поиска). Процесс удаления не влияет на две строки в таблице two_newest_items (источник для таблицы).

Удаление всех строк

Чтобы удалить из таблицы все строки, используйте оператор DELETE без предложения WHERE. Следующий оператор DELETE удалит все строки в таблице two_newest_items table:

DELETE FROM two_newest_items
GO

Теперь two_newest_items – пустая таблица: она не содержит никаких данных. Если вы хотите также удалить определение таблицы, используйте оператор DROP TABLE, как это показано ниже. (Об этом операторе см. "лекцию 15" .)

DROP TABLE two_newest_items
GO
Дополнительная информация. Для получения более подробной информации о способах использования оператора DELETE, таких как использование связанных таблиц (joined tables) в качестве источников для таблицы, а также использование подсказок на уровне таблиц и запросов, найдите "DELETE" в Books Online и выберите подтему "Described".
Максим Ерохин
Максим Ерохин
Россия, г. Санкт-Петербург
Татьяна Лубинец
Татьяна Лубинец
Россия, Уфа, Уфимский авиационный институт, 1987