TRUNCATE vs DELETE: разница на собесе по SQL
TRUNCATE и DELETE обе удаляют данные, но работают по-разному. TRUNCATE сбрасывает таблицу целиком и быстро, DELETE удаляет построчно и поддерживает WHERE. На собесе — классический вопрос на знание DDL/DML.
Если коротко. DELETE удаляет строки по условию (WHERE), TRUNCATE — всю таблицу разом. TRUNCATE быстрее, но без отката в большинстве СУБД.
Проверь себя · 1/3разбор после ответа
Нужно вывести только оплаченные заказы (
status = 'paid') и отсортировать их по времени создания от новых к старым. Какой запрос соответствует задаче?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.