Junior — Middle
Jakie są różnice między poleceniami DELETE i TRUNCATE podczas usuwania danych z tabeli?
sobes.tech AI
Odpowiedź od AI
Команды DELETE и TRUNCATE обе используются для удаления данных из таблицы, но имеют существенные различия:
- DELETE удаляет строки по одной, поддерживает условие WHERE, что позволяет удалять выборочно. Операция логируется и может быть откатана (rollback) в транзакции.
- TRUNCATE удаляет все строки из таблицы целиком, не поддерживает WHERE. Обычно работает быстрее, так как не логирует удаление каждой строки, а сбрасывает данные страниц таблицы. TRUNCATE нельзя откатить в некоторых СУБД.
Пример:
DELETE FROM users WHERE status = 'inactive'; -- удалит только неактивных пользователей
TRUNCATE TABLE users; -- удалит всех пользователей сразу
Также TRUNCATE может сбросить счетчик автоинкремента, а DELETE — нет.