Статья Автор: Деникина Н.В., Деникин А.В.

Команда DELETE для удаления данных

Команда DELETE в SQL используется для удаления строк из таблицы. Она позволяет удалить как отдельные строки, соответствующие заданному условию, так и все строки таблицы. Это мощная команда, поэтому важно всегда использовать условия, если не нужно очищать всю таблицу.

Синтаксис команды DELETE

DELETE FROM имя_таблицы WHERE условие; 
  • имя_таблицы — таблица, из которой удаляются строки.
  • WHERE — условие, определяющее, какие строки будут удалены. Если WHERE не используется, удалятся все строки таблицы.

Удаление данных с условием

Использование WHERE позволяет удалить только те строки, которые соответствуют указанному критерию. Например, у нас есть таблица employees:

employee_id name department age salary email
1 Alice Sales 28 3500 [email protected]
2 Bob IT 32 5000 [email protected]
3 Charlie Marketing 45 4500 NULL
4 Diana Sales 25 3000 [email protected]
  1. Удаление одной строки по условию

    Чтобы удалить конкретную строку, укажите её уникальный идентификатор (например, employee_id):

    DELETE FROM employees WHERE employee_id = 1; 

    После выполнения этого запроса сотрудник с employee_id = 1 будет удален из таблицы employees.

  2. Удаление нескольких строк по условию

    Например, удалим всех сотрудников, работающих в отделе Sales:

    DELETE FROM employees WHERE department = 'Sales'; 

    Этот запрос удалит всех сотрудников из отдела Sales, и только они будут удалены.

  3. Удаление с использованием нескольких условий

    Можно задать несколько условий, используя логические операторы 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 быстрее удаляет данные, так как не записывает операции в журнал транзакций.

Примеры практического использования

  1. Удаление пользователя с определенным email

    DELETE FROM employees WHERE email = '[email protected]'; 

    Этот запрос удалит сотрудника с указанным email.

  2. Удаление сотрудников с низкой зарплатой

    Допустим, мы хотим удалить сотрудников с зарплатой ниже 3000:

    DELETE FROM employees WHERE salary < 3000; 
  3. Удаление временных данных

    В некоторых случаях может понадобиться удаление временных данных. Например, удалим всех сотрудников, у которых не указана электронная почта (email равен NULL):

    DELETE FROM employees WHERE email IS NULL; 
  4. Очистка всей таблицы

    Чтобы полностью очистить таблицу, например, при подготовке новой загрузки данных, можно использовать команду без условия:

    DELETE FROM employees; 

Заключение

Команда DELETE позволяет гибко управлять данными в таблице, удаляя как отдельные строки, так и все записи сразу. Важно всегда проверять условия, особенно при удалении нескольких строк, чтобы избежать случайной потери данных.

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать