В этом руководстве вы узнаете, как использовать оператор SQL Server DELETE для удаления одной или нескольких строк из таблицы.
Введение в оператор DELETE SQL Server
Чтобы полностью удалить одну или несколько строк из таблицы, используйте оператор DELETE. Ниже показан его синтаксис:
DELETE [ TOP( expression ) [ PERCENT ] ] FROM table_name [WHERE search_condition];
Сначала в предложении FROM указывается имя таблицы, из которой необходимо удалить строки.
Например, следующий оператор удалит все строки из target_table:
DELETE FROM target_table;
Во-вторых, чтобы указать количество или процент случайных строк, которые будут удалены, используйте предложение TOP.
Например, следующий оператор DELETE удаляет 10 случайных строк из target_table:
DELETE TOP 10 FROM target_table;
Поскольку таблица хранит строки в неопределенном порядке, мы не знаем, какие строки будут удалены, но мы точно знаем, что количество удаленных строк равно 10.
Аналогично вы можете удалить 10 процентов случайных строк, используя следующий оператор DELETE:
DELETE TOP 10 PERCENT FROM target_table;
В-третьих, на практике вы редко будете удалять все строки из таблицы, а только одну или несколько. В этом случае вам нужно указать search_condition в предложении WHERE, чтобы ограничить количество удаляемых строк.
Строки, в которых search_condition принимает значение true, будут удалены.
Предложение WHERE необязательно. Если вы его пропустите, оператор DELETE удалит все строки из таблицы.
Примеры операторов DELETE для SQL Server
Давайте создадим новую таблицу для демонстрации.
Следующий оператор создает таблицу с именем production.product_history с данными, скопированными из таблицы production.products:
SELECT * INTO production.product_history FROM production.products;
Следующий запрос возвращает все строки из таблицы product_history:
SELECT * FROM production.product_history;
Как ясно видно из вывода, всего у нас 321 строка.
1) Удалить количество случайных строк пример
Следующий оператор DELETE удаляет 21 случайную строку из таблицы product_history:
DELETE TOP(21) FROM production.product_history;
Вот сообщение, выданное SQL Server:
(21 rows affected)
Это означает, что была удалена 21 строка.
2) Удалить процент случайных строк пример
Следующий оператор DELETE удаляет 5 процентов случайных строк из таблицы product_history:
DELETE TOP(5) PERCENT FROM production.product_history;
SQL Server выдал следующее сообщение, указывающее, что было удалено 15 строк(300 x 5% = 15).
(15 rows affected)
3) Удалить некоторые строки с условием пример
Следующий оператор DELETE удаляет все продукты, модельный год которых — 2017:
DELETE FROM production.product_history WHERE model_year = 2017;
Вот выходное сообщение:
(75 rows affected)
4) Пример удаления всех строк из таблицы
Следующий оператор DELETE удаляет все строки из таблицы product_history:
DELETE FROM production.product_history;
Обратите внимание: если вы хотите удалить все строки из большой таблицы, вам следует использовать оператор TRUNCATE TABLE, который быстрее и эффективнее.
В этом руководстве вы узнали, как использовать оператор SQL Server DELETE для удаления одной или нескольких строк из таблицы.