Оператор TRUNCATE служит для очистки таблицы от всех данных. Оператор TRUNCATE аналогичен оператору DELETE применяемом без оператора, WHERE. Основные отличия операторов:
Реализация оператора TRUNCATE различна для каждой СУБД, поэтому рекомендуется обращаться к документации используемой системы. Синтаксис оператора:
- Оператор TRUNCATE не ведет запись об удаленных данных в журнал событий;
- DELETE осуществляет блокировку построчно, оператор TRUNCATE по всей странице целиком. Вследствие этого, оператор TRUNCATE не возвращает никакого значения, DELETE же, возвращает количество удаленных строк;
- TRUNCATE удаляет все строки таблицы, но структура таблицы (столбцы, ограничения, индексы и т.д.) остается. Счетчик, который используется для уникальности новых записей обнуляется. Нельзя использовать TRUNCATE TABLE для таблиц, связанных ограничением FOREIGN KEY. Поскольку TRUNCATE TABLE не логируется, то и не может активировать триггер;
- DELETE удаляет строки в таблицы и для каждой оставляет запись в логе транзакции;
- DELETE не обнуляет счетчик уникальности;
- DELETE может использоваться с выражением WHERE или без него;
- После DELETE возможен откат.
Реализация оператора TRUNCATE различна для каждой СУБД, поэтому рекомендуется обращаться к документации используемой системы. Синтаксис оператора:
TRUNCATE TABLE table_name;
Пример оператора. Представим что у нас есть таблица Students с данными. Удалим все данные из таблицы используя оператор TRUNCATE:
TRUNCATE TABLE Students;
Для лучшего усвоения материала не забывайте отрабатывать примеры самостоятельно на своем компьютере.