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