Как полностью очистить таблицу sql
Полностью очистить таблицу, не удаляя её можно с помощью запроса DELETE . Мы указываем имя таблицы, но опускаем блок WHERE . Тогда удаляются абсолютно все записи, вне зависимости от условий, ведь их нет. 🙂
DELETE FROM wiped_table_name; -- Мы очистили таблицу wiped_table_name
Кроме DELETE без условий можно использовать TRUNCATE . У неё есть свои особенности. Самая главная, она быстрее DELETE , так как не сканирует таблицы перед очисткой и наиболее полезна для очистки больших таблиц.
TRUNCATE cars, cups, parrots; -- Тут можно перечислять сколько угодно таблиц
Руководство по SQL. Очистка таблицы.
Для полного удаления всех данных из таблицы, в языке SQL используется команда TRUNCATE TABLE. Конечно, мы можем использовать команду DROP TABLE, для удаления данных и создать такую же таблицу, но нам придётся создавать её повторно. В подобных случаях, команда TRUNCATE TABLE крайне облегчает нам работу.
Запрос с использованием команды TRUNCATE TABLE имеет следующий вид:
TRUNCATE TABLE имя_таблицы;
Предположим, что у нас есть таблицы developers_copy, которая содержит следующие записи:
+----+-------------------+------------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+-------------------+------------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2000 | | 2 | Peter Romanenko | C++ | 3 | 3500 | | 3 | Andrei Komarov | JavaScript | 2 | 2100 | +----+-------------------+------------+------------+--------+
Допустим, нам необходимо удалить все записи из данной таблицы.
Для этого мы должны использовать следующую команду:
mysql> TRUNCATE TABLE developers_copy;
Теперь наша таблица developers_copy пуста:
mysql> SELECT * FROM developers_copy; Empty set (0.00 sec)
На этом мы заканчиваем изучение способа удаления всех данных из таблицы.
В следующей статье мы рассмотрим использование отображений в языке SQL.
Как очистить таблицу в MySQL
В статье мы расскажем, как в MySQL очистить таблицу. Мы покажем два способа и объясним разницу между ними.
Очистить таблицу можно при помощи одной из команд:
Разница между TRUNCATE и DELETE
Команда TRUNCATE является оператором DDL. DDL (Data Definition Language) — это язык определения данных. Операторы языка DDL управляют объектами баз данных: удаляют, создают или переименовывают объекты БД.

Команда DELETE является DML-оператором. DML (Data Manipulation Language) — это язык манипуляции данными. Операторы языка DML позволяют вставить, удалить, изменить, извлечь или обновить данные в базе.

Сравним работу команд:
| TRUNCATE | DELETE |
|---|---|
| Удаляет все данные из таблицы | Может удалить часть данных в соответствии с условием WHERE |
| Удаляет все строки из таблицы освобождением страниц | Удаляет строки по одной |
| Записывает в журнал транзакций сведения о каждой удалённой странице, а не строке | Делает запись в журнал транзакций при удалении каждой строки |
| Работает быстрее | Работает медленнее |
| Нужны привилегии ALTER | Нужны привилегии DELETE |
| Сбрасывает идентификаторы | Не сбрасывает идентификаторы |
| Блокирует таблицу и страницу перед удалением | Блокирует строку перед её удалением |
Выбор команды зависит от конкретного случая. Если нужно удалить некоторые строки по условию, подойдёт только DELETE. Если нужно полностью очистить таблицу и сбросить идентификаторы, используйте TRUNCATE.
Понять разницу между командами и определиться с их выбором поможет таблица с операторами каждого языка:
| DDL | DML |
|---|---|
| CREATE | SELECT |
| ALTER | INSERT |
| DROP | UPDATE |
| TRUNCATE | DELETE |
| COMMENT | MERGE |
| RENAME | CALL |
| EXPLAIN PLAN | |
| LOCK TABLE |
Таким образом, операторы DDL управляют структурой, а операторы DML — её содержимым.
Как в MySQL очистить таблицу
Подключитесь к серверу по SSH. Затем подключитесь к MySQL при помощи команды:
mysql -u username -p’password’
Вместо username введите имя пользователя, вместо password — пароль.
Если вы не знаете пароль, попробуйте войти без него при помощи команды:
mysql
Если подключение без пароля не настроено, возникнет ошибка:

В этом случае сбросьте пароль от root-пользователя MySQL по инструкции.
TRUNCATE
TRUNCATE полностью очищает таблицу без возможности указать дополнительные условия. Для этого:
Выберите базу данных, в которой находится таблица, которую вы хотите очистить:
USE db_name;
Вместо db_name введите имя базы данных.
Очистите таблицу при помощи команды:
TRUNCATE table_name;
TRUNCATE позволяет указать название БД и название таблицы в одном запросе. Для этого используйте команду:
TRUNCATE db_name.table_name;
Вместо db_name введите имя базы данных, а вместо table_name введите имя таблицы.
Готово, вы очистили таблицу.
DELETE
Выберите базу данных, в которой находится таблица, которую вы хотите очистить:
USE db_name;
Вместо db_name введите имя базы данных.
Очистите таблицу при помощи команды:
DELETE FROM table_name;
Вы можете указать название БД и таблицы в одном запросе:
DELETE FROM db_name.table_name;
Вместо db_name введите имя базы данных, а вместо table_name введите имя таблицы.
Готово, вы очистили таблицу при помощи DELETE.
DELETE позволяет использовать условие WHERE, чтобы удалить некоторые строки из таблицы:
DELETE FROM table_name WHERE condition;
Где condition — это условие.
Пример команды, в котором будут удалены все строки, значение столбца, id которых больше 1000:
DELETE FROM table_name WHERE id > 1000;
Как проверить содержимое таблицы
Если вы хотите убедиться, что в таблице не осталось данных, воспользуйтесь командой:
SELECT * FROM db_name.table_name;
Вместо db_name введите имя базы данных, а вместо table_name введите имя таблицы.
Если таблица пустая, вывод будет следующим:

Помогла ли вам статья?
Спасибо за оценку. Рады помочь
TRUNCATE TABLE (Transact-SQL)
Удаляет все строки в таблице или указанные секции таблицы, не записывая в журнал удаление отдельных строк. Инструкция TRUNCATE TABLE похожа на инструкцию DELETE без предложения WHERE, однако TRUNCATE TABLE выполняется быстрее и требует меньших ресурсов системы и журналов транзакций.
Синтаксис
-- Syntax for SQL Server and Azure SQL Database TRUNCATE TABLE < database_name.schema_name.table_name | schema_name.table_name | table_name >[ WITH ( PARTITIONS ( < | > [ , . n ] ) ) ] [ ; ] ::= TO
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse TRUNCATE TABLE < database_name.schema_name.table_name | schema_name.table_name | table_name >[;]
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
database_name
Имя базы данных.
schema_name
Имя схемы, которой принадлежит таблица.
table_name
Имя таблицы, которая должна быть усечена, или таблицы, из которой удаляются все строки. table_name должно быть литералом. table_name не может быть функцией OBJECT_ID() или переменной.
WITH ( PARTITIONS ( < partition_number_expression> | range> > [ , . n ] ) )
Область применения: SQL Server (SQL Server 2016 (13.x) до текущей версии)
Указывает секции для усечения или секции, из которых удаляются все строки. Если таблица не секционирована, аргумент WITH PARTITIONS приведет к возникновению ошибки. Если предложение WITH PARTITIONS не указано, будет усечена вся таблица.
можно указать одним из следующих способов:
- Указав номер секции, например WITH (PARTITIONS (2))
- Указав номера нескольких секций, разделив их запятыми, например WITH (PARTITIONS (1, 5))
- Указав диапазоны секций и отдельные секции, например WITH (PARTITIONS (2, 4, 6 TO 8))
- можно указать номерами секций, разделенными ключевым словом TO, например: WITH (PARTITIONS (6 TO 8)) .
Для усечения секционированной таблицы таблицы и индексы должны быть выровнены (секционированы одной функцией секционирования).
Замечания
Инструкция TRUNCATE TABLE обладает следующими преимуществами по сравнению с инструкцией DELETE.
- Используется меньший объем журнала транзакций. Инструкция DELETE производит удаление по одной строке и заносит в журнал транзакций запись для каждой удаляемой строки. Инструкция TRUNCATE TABLE удаляет данные, освобождая страницы данных, используемые для хранения данных таблиц, и в журнал транзакций записывает только данные об освобождении страниц.
- Обычно используется меньшее количество блокировок. Если инструкция DELETE выполняется с блокировкой строк, для удаления блокируется каждая строка таблицы. Инструкция TRUNCATE TABLE всегда блокирует таблицу (включая блокировку схемы (SCH-M)) и страницу, но не каждую строку.
- В таблице остается нулевое количество страниц, без исключений. После выполнения инструкции DELETE в таблице могут все еще оставаться пустые страницы. Например, чтобы освободить пустые страницы в куче, необходима, как минимум, монопольная блокировка таблицы (LCK_M_X). Если операция удаления не использует блокировку таблицы, таблица (куча) будет содержать множество пустых страниц. В индексах после операции удаления могут оказаться пустые страницы, хотя эти страницы будут быстро освобождены процессом фоновой очистки.
Инструкция TRUNCATE TABLE удаляет все строки таблицы, но структура таблицы и ее столбцы, ограничения, индексы и т. п. сохраняются. Чтобы удалить не только данные таблицы, но и ее определение, следует использовать инструкцию DROP TABLE .
Если таблица содержит столбец идентификаторов, счетчик этого столбца сбрасывается до начального значения, определенного для этого столбца. Если начальное значение не задано, используется значение по умолчанию, равное 1. Чтобы сохранить столбец идентификаторов, используйте инструкцию DELETE.
Для операции TRUNCATE TABLE можно выполнить откат.
Ограничения
Нельзя использовать TRUNCATE TABLE в таблицах в следующих случаях.
- На таблицу ссылается ограничение FOREIGN KEY. Таблицу, имеющую внешний ключ, ссылающийся сам на себя, можно усечь.
- Таблица является частью индексированного представления.
- Таблица опубликована с использованием репликации транзакций или репликации слиянием.
- Это темпоральная таблица с управлением версиями.
- На таблицу ссылается ограничение EDGE.
Для таблиц с какими-либо из этих характеристик следует использовать инструкцию DELETE.
Инструкция TRUNCATE TABLE не может активировать триггер, поскольку она не записывает в журнал удаление отдельных строк. Дополнительные сведения см. в разделе CREATE TRIGGER (Transact-SQL).
В Azure Synapse Analytics and Analytics Platform System (PDW):
- Инструкцию TRUNCATE TABLE нельзя использовать в инструкции EXPLAIN.
- Инструкцию TRUNCATE TABLE невозможно выполнить внутри транзакции.
Усечение больших таблиц
В Microsoft SQL Server существует возможность удалять или усекать таблицы, которые имеют больше 128 экстентов, не удерживая одновременные блокировки для всех экстентов, предназначенных для удаления.
Разрешения
Минимально необходимым разрешением является ALTER для table_name. Разрешения TRUNCATE TABLE назначаются по умолчанию владельцу таблицы, членам предопределенной роли сервера sysadmin , а также предопределенных ролей базы данных db_owner и db_ddladmin , и они не могут быть переданы. Тем не менее инструкцию TRUNCATE TABLE можно встроить в модуль, например в хранимую процедуру, и предоставить соответствующие разрешения этому модулю с помощью предложения EXECUTE AS .
Примеры
А. Усечение таблицы
В ходе выполнения следующего примера удаляются все данные таблицы JobCandidate . Инструкции SELECT включены до и после инструкции TRUNCATE TABLE для сравнения результатов.
USE AdventureWorks2022; GO SELECT COUNT(*) AS BeforeTruncateCount FROM HumanResources.JobCandidate; GO TRUNCATE TABLE HumanResources.JobCandidate; GO SELECT COUNT(*) AS AfterTruncateCount FROM HumanResources.JobCandidate; GO
B. Усечение секций таблицы
Область применения: SQL Server (SQL Server 2016 (13.x) до текущей версии)
В следующем примере выполняется усечение указанных секций секционированной таблицы. Синтаксис WITH (PARTITIONS (2, 4, 6 TO 8)) задает усечение секций с номерами 2, 4, 6, 7 и 8.
TRUNCATE TABLE PartitionTable1 WITH (PARTITIONS (2, 4, 6 TO 8)); GO