Sobes.tech
Junior — Middle

Quelle est la différence entre les commandes DELETE et TRUNCATE lors de la manipulation de tables dans une base de données?

sobes.tech IA

Réponse de l'IA

Основные отличия между командами 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.