TRUNCATE TABLE в SQL
В этой статье вы научитесь быстро удалять все строки из таблицы с помощью SQL.
Оператор TRUNCATE TABLE
— это аналог DELETE
без условия WHERE
. Отличие в том, что TRUNCATE TABLE
удаляет все строки из таблицы быстрее, чем DELETE
.
TRUNCATE TABLE
удаляет все строки таблицы, но сохраняет структуры таблицы, столбцы, ограничения, индексы и так далее. Чтобы удалять таблицу вместе с данными, можно использовать DROP TABLE
.
Синтаксис
Оператор TRUNCATE TABLE
используют так:
TRUNCATE TABLE имя_таблицы;
Пример
Рассмотрим таблицу сотрудников employees
в нашей базе данных со следующими записями:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
Чтобы удалить все строки из таблицы, воспользуемся оператором TRUNCATE TABLE
.
TRUNCATE TABLE employees;
Если вы попытаетесь выбрать записи из таблицы employees
после выполнения такого SQL-запроса, вы получите пустой набор результатов.
TRUNCATE TABLE vs DELETE
DELETE
и TRUNCATE TABLE
, казалось бы, делают одно и то же, но работают они на самом деле по-разному. Вот некоторые различия между этими двумя операторами:
- Оператор
TRUNCATE TABLE
удаляет и заново создает таблицу таким образом, что любое значение автоинкремента сбрасывается на начальное значение, которое обычно равно 1. DELETE
позволяет отфильтровать строки, которые нужно удалить с помощью необязательного условияWHERE
.TRUNCATE TABLE
же не поддерживает условиеWHERE
, он просто удаляет все строки.TRUNCATE TABLE
работает быстрее и использует меньше системных ресурсов, чемDELETE
. Так происходит потому, чтоDELETE
сначала сканирует таблицу, чтобы подсчитать строки, которые нужно удалить, и лишь затем удаляет строки по одной и создает запись в журнал базы данных для каждой удаленной строки.TRUNCATE TABLE
же просто удаляет все строки, не предоставляя никакой дополнительной информации.
Совет. Используйте
TRUNCATE TABLE
, если вы хотите просто удалить все строки и заново создать всю таблицу. ИспользуйтеDELETE
, если вы хотите удалить ограниченное количество строк по определенному условию или не хотите сбрасывать значение автоинкремента.