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 — нет.