SQL-сервер УДАЛИТЬ

В этом руководстве вы узнаете, как использовать оператор 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 для удаления одной или нескольких строк из таблицы.

Мирослав С.

Автор статей, ИБ-специалист