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, если вы хотите удалить ограниченное количество строк по определенному условию или не хотите сбрасывать значение автоинкремента.

codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©