Какие различия существуют между командами DELETE и TRUNCATE при удалении данных из таблицы?

Команды DELETE и TRUNCATE обе используются для удаления данных из таблицы, но имеют существенные различия:

Короткий ответ

Что ответить на собеседовании

Команды DELETE и TRUNCATE обе используются для удаления данных из таблицы, но имеют существенные различия:

Подробный разбор

Ответ с пояснениями

Команды DELETE и TRUNCATE обе используются для удаления данных из таблицы, но имеют существенные различия:

  • DELETE удаляет строки по одной, поддерживает условие WHERE, что позволяет удалять выборочно. Операция логируется и может быть откатана (rollback) в транзакции.
  • TRUNCATE удаляет все строки из таблицы целиком, не поддерживает WHERE. Обычно работает быстрее, так как не логирует удаление каждой строки, а сбрасывает данные страниц таблицы. TRUNCATE нельзя откатить в некоторых СУБД.

Пример:

DELETE FROM users WHERE status = 'inactive'; -- удалит только неактивных пользователей
TRUNCATE TABLE users; -- удалит всех пользователей сразу

Также TRUNCATE может сбросить счетчик автоинкремента, а DELETE — нет.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее