English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как быстро удалить все строки из таблицы с помощью SQL.
предложение TRUNCATE TABLE быстрее удаляет все строки из таблицы, чем DELETE. С точки зрения логики, TRUNCATE TABLE подобноDELETEнетWHEREпродолжение предложений.
Предложение TRUNCATE TABLE удаляет все строки из таблицы, но структура таблицы и её столбцы, ограничения, индексы и т.д. сохраняются. Чтобы удалить таблицу и её данные, можно использовать этоDROP TABLEпроделать, но будьте осторожны.
Основная грамматика TRUNCATE TABLE:
TRUNCATE TABLE table_name;
дайте нам выполнить операцию по очистке таблицы базы данных.
рассмотрим, что у нас естьemployeeтаблица, содержащая следующие записи:
+--------+--------------+------------+--------+---------+ | 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 | +--------+--------------+------------+--------+---------+
Следующие команды извлекутemployeesудалить все строки из таблицы:
TRUNCATE TABLE employees;
Теперь, после выполнения вышеуказанных SQL-запросов, если попытаться извлечьemployeeв таблицевыбор записейвсегда будет возвращаться пустой результат.
Хотя DELETE и TRUNCATE TABLE кажутся имеющими одинаковый эффект, их способ работы различается. Вот некоторые основные различия между этими двумя предложениями:
Запрос TRUNCATE TABLE удаляет и заново создает таблицу, и сбрасывает любые автоматические значения прироста до их начальных значений (обычно 1).
DELETE позволяет фильтровать строки для удаления с помощью опционального подзапроса WHERE, в то время как TRUNCATE TABLE не поддерживает подзапрос WHERE и удаляет все строки.
TRUNCATE TABLE быстрее и использует меньше системных ресурсов по сравнению с DELETE, так как DELETE сканирует таблицу для генерации количества строк, которые будут удалены, и затем удаляет строки по одной, записывая каждый удалённый рядок в журнал базы данных, в то время как TRUNCATE TABLE удаляет все строки без предоставления другой информации.
Совет:Если вы хотите удалить все строки и заново создать всю таблицу, используйте TRUNCATE TABLE. Если вы хотите удалить ограниченное количество строк на основе определённых условий или не хотите сбрасывать автоматический прирост, используйте DELETE.