← Назад ко всем вопросам

Разница между DELETE и TRUNCATE

1️⃣ Как кратко ответить

DELETE удаляет строки из таблицы с возможностью использования условий и триггеров, оставляя структуру таблицы и индексы нетронутыми. TRUNCATE быстро очищает всю таблицу, сбрасывая счетчики автоинкремента, не вызывая триггеры и не поддерживая условия.

2️⃣ Подробное объяснение темы

DELETE и TRUNCATE — это команды SQL, используемые для удаления данных из таблиц базы данных, но они работают по-разному и имеют разные применения.

DELETE

DELETE — это команда DML (Data Manipulation Language), которая используется для удаления одной или нескольких строк из таблицы. Она позволяет использовать условия (WHERE) для точного указания, какие строки должны быть удалены. DELETE поддерживает триггеры, что позволяет выполнять дополнительные действия при удалении строк.

Пример использования DELETE:

DELETE FROM employees WHERE department = 'Sales';
  • DELETE FROM employees: Указывает, что удаление будет происходить в таблице employees.
  • WHERE department = 'Sales': Условие, определяющее, что удалять нужно только те строки, где значение в столбце department равно 'Sales'.

DELETE может быть медленнее, чем TRUNCATE, особенно при удалении большого количества строк, так как каждая удаляемая строка фиксируется в журнале транзакций для возможности отката.

TRUNCATE

TRUNCATE — это команда DDL (Data Definition Language), которая используется для быстрого удаления всех строк из таблицы. Она не поддерживает условия и не вызывает триггеры. TRUNCATE сбрасывает счетчики автоинкремента, что может быть полезно, если нужно начать нумерацию с начала.

Пример использования TRUNCATE:

TRUNCATE TABLE employees;
  • TRUNCATE TABLE employees: Указывает, что все строки из таблицы employees будут удалены.

TRUNCATE работает быстрее, чем DELETE, так как не фиксирует удаление каждой строки в журнале транзакций. Вместо этого, TRUNCATE просто освобождает страницы данных, что делает его более эффективным для очистки таблицы.

Когда использовать

  • Используйте DELETE, когда нужно удалить определенные строки, используя условия, или когда необходимо, чтобы сработали триггеры.
  • Используйте TRUNCATE, когда нужно быстро очистить всю таблицу и не требуется сохранение данных в журнале транзакций для каждой строки.

Тема: Базы данных
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки