Разница между DELETE, TRUNCATE и DROP заключается в том, что именно удаляется и как это происходит:
DELETE
TRUNCATE
DROP
Удаляет строки из таблицы по условию (WHERE).
WHERE
Если WHERE не указано → удаляются все строки.
Таблица и её структура сохраняются.
Можно откатить (ROLLBACK), если транзакция не зафиксирована.
ROLLBACK
Срабатывают триггеры.
Пример:
DELETE FROM employees WHERE id = 10;
Удаляет все строки из таблицы.
Нельзя задать условие (WHERE недоступен).
Работает быстрее, чем DELETE, т.к. не пишет построчно в лог.
Обычно нельзя откатить (зависит от СУБД).
Сбрасывает счётчик автоинкремента (например, id).
id
Полностью удаляет таблицу (структуру + данные).
Восстановить можно только из бэкапа.
Удаляет все связанные объекты (индексы, ограничения).
Команда
Что удаляет
Условие WHERE
Возможность отката
Автоинкремент
Триггеры
Данные (строки)
Да
Да (в транзакции)
Нет
Все данные
Обычно нет
Сбрасывает
Таблицу (структуру+данные)
Нет таблицы
Last updated 4 months ago
TRUNCATE TABLE employees;
DROP TABLE employees;