Чем отличаются delete, drop, truncate?

Разница между DELETE, TRUNCATE и DROP заключается в том, что именно удаляется и как это происходит:


1️⃣ DELETE

  • Удаляет строки из таблицы по условию (WHERE).

  • Если WHERE не указано → удаляются все строки.

  • Таблица и её структура сохраняются.

  • Можно откатить (ROLLBACK), если транзакция не зафиксирована.

  • Срабатывают триггеры.

Пример:

DELETE FROM employees WHERE id = 10;

2️⃣ TRUNCATE

  • Удаляет все строки из таблицы.

  • Нельзя задать условие (WHERE недоступен).

  • Работает быстрее, чем DELETE, т.к. не пишет построчно в лог.

  • Обычно нельзя откатить (зависит от СУБД).

  • Сбрасывает счётчик автоинкремента (например, id).

Пример:

TRUNCATE TABLE employees;

3️⃣ DROP

  • Полностью удаляет таблицу (структуру + данные).

  • Восстановить можно только из бэкапа.

  • Удаляет все связанные объекты (индексы, ограничения).

Пример:

DROP TABLE employees;

Сравнение

Команда

Что удаляет

Условие WHERE

Возможность отката

Автоинкремент

Триггеры

DELETE

Данные (строки)

Да

Да (в транзакции)

Нет

Да

TRUNCATE

Все данные

Нет

Обычно нет

Сбрасывает

Нет

DROP

Таблицу (структуру+данные)

Нет

Нет

Нет таблицы

Нет

Last updated

Was this helpful?