В этом учебном пособии вы узнаете, как использовать оператор DELETE в SQL Server (Transact-SQL) с синтаксисом и примерами.
Описание
Оператор DELETE SQL Server (Transact-SQL) используется для удаления одной записи или нескольких записей из таблицы в SQL Server.
Синтаксис
В простейшей форме синтаксис оператора DELETE в SQL Server (Transact-SQL):
[WHERE conditions];
Полный синтаксис оператора DELETE в SQL Server (Transact-SQL):
FROM table
[WHERE conditions];
Параметры или аргументы
table - таблица, из которой вы хотите удалить записи.
WHERE conditions - необязательный. Условия, которые должны быть выполнены для записей, подлежащих удалению.
TOP (top_value) - необязательный. Если указано, оно удалит верхнее число строк в результирующем наборе на основе top_value. Например, TOP (10) удалит первые 10 строк, соответствующих критериям удаления.
PERCENT - необязательный. Если PERCENT задан, то верхние строки основаны на проценте top_value от общего набора результатов (как определено значением PERCENT). Например, TOP (10) PERCENT удалит первые 10% записей, соответствующих критериям удаления.
Примечание
Вам не нужно указывать поля в операторе DELETE SQL Server, так как вы удаляете всю строку из таблицы.
Пример использования одного условия
Рассмотрим простой пример запроса SQL Server DELETE, где у нас есть только одно условие в операторе DELETE.
Например:
1 2 |
DELETE FROM employees WHERE first_name = 'Serg'; |
Этот пример SQL Server DELETE удалит все записи из таблицы employees, где first_name является 'Serg'.
Вы можете проверить количество строк, которые будут удалены. Вы можете определить количество строк, которые будут удалены, запустив следующее предложение SELECT перед выполнением удаления.
1 2 3 |
SELECT count(*) FROM employees WHERE first_name = 'Serg'; |
Пример использования двух условий
Рассмотрим пример SQL Server DELETE, где у нас есть только два условия в операторе DELETE.
Например:
1 2 3 |
DELETE FROM employees WHERE last_name = 'Ершов' AND employee_id >= 32; |
Этот пример SQL Server DELETE удалит все записи из таблицы employees, где last_name - 'Ершов', а employee_id больше или равно 32.
Вы можете определить количество строк, которые будут удалены, запустив следующее предложение SELECT перед выполнением удаления.
1 2 3 4 |
SELECT count(*) FROM employees WHERE last_name = 'Ершов' AND employee_id >= 32; |
Пример использования ключевого слова TOP
Рассмотрим пример SQL Server DELETE, в котором мы используем ключевое слово TOP в операторе DELETE.
Например:
1 2 3 |
DELETE TOP(3) FROM employees WHERE last_name = 'Козлов'; |
Этот пример SQL Server DELETE удалит первые 3 записи из таблицы employees, где last_name - 'Козлов'. Если в таблице employee есть другие записи, которые имеют значение last_name 'Козлов', они не будут затронуты оператором DELETE.
Пример использование условия EXISTS
Вы также можете выполнять более сложные удаления.
Вы можете удалить записи в одной таблице на основе значений в другой таблице. Поскольку вы не можете перечислить более одной таблицы в предложении FROM при выполнении удаления, вы можете использовать условие EXISTS.
Например:
1 2 3 4 5 6 |
DELETE FROM employees WHERE EXISTS ( SELECT * FROM contacts WHERE contacts.contact_id = employees.employee_id AND contacts.contact_id < 100 ); |
Этот пример SQL Server DELETE удалит все записи в таблице employees, где есть запись в таблице contacts, у которой contact_id меньше 100, а contact_id соответствует employee_id.
Если вы хотите определить количество строк, которые будут удалены, перед выполнением удаления вы можете запустить следующее SQL предложение SELECT.
1 2 3 4 5 6 7 |
SELECT COUNT(*) FROM employees WHERE EXISTS ( SELECT * FROM contacts WHERE contacts.contact_id = employees.employee_id AND contacts.contact_id < 100 ); |