TRUNCATE vs DELETE: разница на собесе по SQL
TRUNCATE и DELETE обе удаляют данные, но работают по-разному. TRUNCATE сбрасывает таблицу целиком и быстро, DELETE удаляет построчно и поддерживает WHERE. На собесе — классический вопрос на знание DDL/DML.
Если коротко. DELETE удаляет строки по условию (WHERE), TRUNCATE — всю таблицу разом. TRUNCATE быстрее, но без отката в большинстве СУБД.
Проверь себя · 1/3разбор после ответа
В таблице
orders нужно вывести заказы так, чтобы сначала шли самые дорогие (amount), а при одинаковой сумме — более ранние по created_at (чтобы вверху был «первый» из одинаковых). Какой ORDER BY подходит?TRUNCATE vs DELETE: таблица различий
Когда использовать TRUNCATE
- Нужно очистить таблицу полностью и быстро.
- Не нужно условие WHERE.
- Нужно сбросить AUTO_INCREMENT/sequence.
Когда использовать DELETE
- Нужно удалить часть строк по условию.
- Хотите триггеры/каскады.
- Нужна возможность откатить транзакцию.
На примере
TRUNCATE — вся таблица
TRUNCATE TABLE sessions;DELETE — по условию
DELETE FROM sessions WHERE created_at < NOW() - INTERVAL '90 days';Ловушка на собесе
На собесе проверяют: «удалили миллион строк, AUTO_INCREMENT не сбросился, почему?». Ответ: DELETE не трогает счётчик. Если надо сбросить — нужен TRUNCATE или ручное ALTER SEQUENCE/AUTO_INCREMENT.