Ответ
Оператор DELETE в SQL используется для удаления одной или нескольких записей (строк) из таблицы базы данных.
Ключевые особенности:
- Удаляет целые строки, а не отдельные значения в столбцах.
- Работает на основе условия
WHERE. Без условияWHEREудалятся ВСЕ строки в таблице. - Это операция DML (Data Manipulation Language), поэтому её можно откатить командой
ROLLBACK(если транзакция не зафиксирована).
Базовый синтаксис:
DELETE FROM table_name
WHERE condition;
Примеры:
- Удаление конкретной записи:
DELETE FROM users WHERE id = 123; - Удаление по условию:
DELETE FROM orders WHERE status = 'cancelled' AND created_at < '2023-01-01';
Важные отличия от TRUNCATE TABLE: |
DELETE | TRUNCATE |
|---|---|---|
Удаляет строки по условию WHERE. |
Удаляет ВСЕ строки сразу. | |
| Медленнее, так как каждая операция удаления логируется. | Быстрее, минимально логируется. | |
Можно откатить (ROLLBACK). |
В большинстве СУБД нельзя откатить. | |
Срабатывают триггеры ON DELETE. |
Триггеры не срабатывают. |
Всегда используйте WHERE с DELETE, если не планируете очищать всю таблицу.