Встречается на собеседованиях • сегодня

В разница между командами делит и транткейп

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

DELETE
Удаляет одну или несколько строк из таблицы, которые соответствуют критериям, указанным в предложении `WHERE`.

Особенности:

  • Условное удаление: Может использовать условие `WHERE` для определения, какие строки должны быть удалены. Если `WHERE` не указано, будут удалены все строки, но процесс будет медленнее по сравнению с `TRUNCATE`.
  • Транзакционность: Операции могут быть отменены, они поддерживают транзакции. Если вы удаляете данные и затем выполняете `ROLLBACK`, изменения будут отменены.
  • Логирование: Логирует удаление каждой строки, что занимает время и ресурсы сервера.
text
```sql
DELETE FROM customers WHERE last_name = 'Smith';
```

TRUNCATE
Используется для быстрого удаления всех строк из таблицы, сбрасывая таблицу в исходное состояние без строк.

Особенности:

  • Быстрое удаление: Обычно работает быстрее `DELETE`, так как не логирует удаление каждой строки. Вместо этого она удаляет данные путем деаллокации страниц, на которых эти данные хранятся.
  • Не поддерживает `WHERE`: Нельзя использовать `TRUNCATE` для условного удаления. Она всегда удаляет все строки.
  • Сброс счётчиков: В некоторых СУБД, например в PostgreSQL, `TRUNCATE` также сбрасывает любые счетчики идентификации (серийные номера).
text
```sql
TRUNCATE TABLE customers;
```

Различия:

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

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

May 22, 2024, easyoffer

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы