Sobes.tech
Назад к вопросам
Junior — Middle
81

Какое отличие между командами DELETE и TRUNCATE при работе с таблицами в базе данных?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Основные отличия между командами DELETE и TRUNCATE в работе с таблицами базы данных:

  • DELETE удаляет строки из таблицы по условию (если указано), или все строки, если условие отсутствует. Это операция DML (Data Manipulation Language).

    • Можно использовать WHERE для выборочного удаления.
    • Удаление происходит построчно, что может быть медленнее.
    • Операция логируется, можно откатить (ROLLBACK).
  • TRUNCATE удаляет все строки из таблицы целиком. Это операция DDL (Data Definition Language).

    • Не поддерживает WHERE — удаляет все данные.
    • Работает быстрее, так как не удаляет строки по одной, а сбрасывает данные.
    • Обычно не логирует удаление каждой строки, поэтому откат может быть ограничен.
    • Может сбросить счетчики автоинкремента.

Пример:

DELETE FROM users WHERE id = 10; -- удалит конкретную строку
TRUNCATE TABLE users; -- удалит все строки из таблицы

Выбор зависит от задачи: если нужно удалить все данные быстро — TRUNCATE, если выборочно — DELETE.