DELETE удаляет выбранные строки, TRUNCATE обычно очищает таблицу целиком специальной операцией, DROP удаляет сам объект таблицы. Транзакции, триггеры и сброс счётчиков зависят от СУБД.
Чем отличаются DELETE, TRUNCATE и DROP?
DELETE удаляет выбранные строки, TRUNCATE обычно очищает таблицу целиком специальной операцией, DROP удаляет сам объект таблицы. Транзакции, триггеры и сброс счётчиков зависят от СУБД.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
DELETE удаляет выбранные строки, TRUNCATE обычно очищает таблицу целиком специальной операцией, DROP удаляет сам объект таблицы. Транзакции, триггеры и сброс счётчиков зависят от СУБД.
У DELETE можно указать WHERE; без него затрагиваются все строки. TRUNCATE не предназначен для произвольной фильтрации и может иметь ограничения по внешним ключам. После DROP теряются и определение таблицы, и её данные в рамках семантики СУБД. Неверно универсально утверждать, что TRUNCATE никогда нельзя откатить: например, PostgreSQL поддерживает его транзакционность. Перед любой операцией проверяют точную область, зависимости и возможность восстановления.