Sobes.tech
Back to questions
Junior — Middle
100

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

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

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

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

Пример:

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

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