Ответ
Для этого используется оператор TRUNCATE TABLE. Он удаляет все строки из таблицы, освобождая место на диске, и обычно не логирует удаление отдельных строк, что делает его значительно быстрее DELETE для больших таблиц.
Синтаксис:
TRUNCATE TABLE table_name;
Ключевые особенности и отличия от DELETE:
| Особенность | TRUNCATE TABLE |
DELETE FROM |
|---|---|---|
| Скорость | Быстрее (операция на уровне данных) | Медленнее (логирует каждую строку) |
| Логирование | Минимальное (логирует освобождение страниц) | Полное (логирует каждую удаленную строку) |
| Где условие? | Не поддерживает WHERE |
Поддерживает WHERE для выборочного удаления |
| Автоинкремент | Сбрасывает счётчик (в большинстве СУБД) | Не сбрасывает счётчик |
| Триггеры | Не вызывает триггеры DELETE |
Вызывает триггеры DELETE |
| Требуемые права | Обычно ALTER на таблицу |
DELETE на таблицу |
Важно: TRUNCATE — операция DDL (Data Definition Language), которая не может быть частью транзакции в некоторых СУБД и выполняется с неявным коммитом.
Ответ 18+ 🔞
Да ты посмотри, какая хитрая жопа у этих баз данных! Нужно всю таблицу вычистить, а ты сидишь и DELETE без WHERE пишешь, как последний ламер. Ну, блядь, так до второго пришествия ждать!
Так вот, есть же специальная команда, TRUNCATE TABLE. Эта штука не будет, как дура, каждую строчку по отдельности в лог записывать и плакать. Она берёт и — хрясь! — сразу все данные нахуй выбрасывает, освобождая место. Скорость — просто овердохуища, особенно если таблица большая.
Пишется элементарно:
TRUNCATE TABLE имя_таблицы;
А теперь, чтобы не быть мудаком, запомни разницу:
| Особенность | TRUNCATE TABLE |
DELETE FROM |
|---|---|---|
| Скорость | Быстро, как хуй с горы (работает с данными целиком) | Медленно, ибо каждая строка — отдельная история |
| Логирование | Почти никакого (логирует только факт "страницы освобождены") | Полный пиздец, логирует каждую удалённую строку |
| Условие WHERE | Не-а, только целиком! | Да, можно удалить выборочно, если не лень |
| Счётчик автоинкремента | Обнуляет (в большинстве систем) | Оставляет как есть, продолжает с последнего |
| Триггеры | Не запускает триггеры на удаление | Запускает, конечно, а то как же |
| Какие права нужны | Обычно право ALTER на таблицу |
Достаточно права DELETE |
И главное, блядь, предупреждение: TRUNCATE — это операция из раздела DDL, определения данных. В некоторых системах её в транзакцию нормально не завернёшь, она может сама всё закоммитить. Так что думай, э бошка, прежде чем использовать!