Команда DELETE
в SQL используется для удаления строк из таблицы. Она позволяет удалить как отдельные строки, соответствующие заданному условию, так и все строки таблицы. Это мощная команда, поэтому важно всегда использовать условия, если не нужно очищать всю таблицу.
Синтаксис команды DELETE
DELETE FROM имя_таблицы WHERE условие;
имя_таблицы
— таблица, из которой удаляются строки.
WHERE
— условие, определяющее, какие строки будут удалены. Если WHERE
не используется, удалятся все строки таблицы.
Удаление данных с условием
Использование WHERE
позволяет удалить только те строки, которые соответствуют указанному критерию. Например, у нас есть таблица employees
:
-
Удаление одной строки по условию
Чтобы удалить конкретную строку, укажите её уникальный идентификатор (например, employee_id
):
DELETE FROM employees WHERE employee_id = 1;
После выполнения этого запроса сотрудник с employee_id = 1
будет удален из таблицы employees
.
-
Удаление нескольких строк по условию
Например, удалим всех сотрудников, работающих в отделе Sales
:
DELETE FROM employees WHERE department = 'Sales';
Этот запрос удалит всех сотрудников из отдела Sales
, и только они будут удалены.
-
Удаление с использованием нескольких условий
Можно задать несколько условий, используя логические операторы AND
и OR
. Например, удалим всех сотрудников старше 40 лет из отдела Marketing
:
DELETE FROM employees WHERE department = 'Marketing' AND age > 40;
Этот запрос удалит только сотрудников из Marketing
, чей возраст превышает 40 лет.
Удаление всех строк без условия
Если в команде DELETE
не указать условие WHERE
, SQL удалит все строки таблицы. При этом сама таблица останется, но будет пуста.
DELETE FROM employees;
Этот запрос удалит все данные в таблице employees
. Обычно такой запрос используется для очистки таблицы. После его выполнения в таблице employees
не останется строк, однако структура таблицы сохранится.
Внимание: Всегда будьте осторожны при удалении всех строк таблицы, особенно если это рабочая база данных, так как данные не будут восстановлены после удаления.
Сравнение с командой TRUNCATE
Хотя DELETE
без WHERE
удаляет все строки, аналогом полной очистки таблицы является команда TRUNCATE
. В SQLite её поддержка ограничена, но в других СУБД TRUNCATE
быстрее удаляет данные, так как не записывает операции в журнал транзакций.
Примеры практического использования
-
Удаление пользователя с определенным email
DELETE FROM employees WHERE email = '[email protected]';
Этот запрос удалит сотрудника с указанным email.
-
Удаление сотрудников с низкой зарплатой
Допустим, мы хотим удалить сотрудников с зарплатой ниже 3000:
DELETE FROM employees WHERE salary < 3000;
-
Удаление временных данных
В некоторых случаях может понадобиться удаление временных данных. Например, удалим всех сотрудников, у которых не указана электронная почта (email равен NULL
):
DELETE FROM employees WHERE email IS NULL;
-
Очистка всей таблицы
Чтобы полностью очистить таблицу, например, при подготовке новой загрузки данных, можно использовать команду без условия:
DELETE FROM employees;
Заключение
Команда DELETE
позволяет гибко управлять данными в таблице, удаляя как отдельные строки, так и все записи сразу. Важно всегда проверять условия, особенно при удалении нескольких строк, чтобы избежать случайной потери данных.