MySQL — это популярная система управления реляционными базами данных (СУБД) с открытым исходным кодом. Она использует язык SQL для управления данными и широко применяется в веб-разработке, аналитике и других областях, где требуется надежное хранение и обработка структурированной информации.
В статье расскажем о двух командах очистки таблицы в MySQL и объясним разницу между ними.
Что такое таблицы MySQL
Таблицы в MySQL — это основные структурные элементы базы данных, которые хранят информацию в упорядоченном виде. Каждая таблица состоит из столбцов и строк. Столбцы определяют тип данных: текст, числа, даты, а строки содержат конкретные значения. Таблицы позволяют организовывать данные логически и эффективно управлять ими с помощью SQL-запросов.
Для чего нужна очистка таблицы MySQL
Очистка таблицы может потребоваться в различных ситуациях:
удаление устаревших или ненужных данных;
сброс тестовых данных после завершения тестирования;
подготовка таблицы к импорту новых данных;
освобождение дискового пространства;
сброс автоинкрементных идентификаторов;
очистка временных или кэшированных данных.
Очистить таблицу можно при помощи одной из команд:
- TRUNCATE,
- DELETE.
Разница между TRUNCATE и DELETE
Команда TRUNCATE является оператором DDL. DDL (Data Definition Language) — это язык определения данных. Операторы языка DDL управляют объектами баз данных: удаляют, создают или переименовывают объекты БД.
Команда DELETE является DML-оператором. DML (Data Manipulation Language) — это язык манипуляции данными. Операторы языка DML позволяют вставить, удалить, изменить, извлечь или обновить данные в базе.
Сравним работу команд:
Выбор команды зависит от конкретного случая. Если нужно удалить некоторые строки по условию, подойдёт только DELETE. Если нужно полностью очистить таблицу и сбросить идентификаторы, используйте TRUNCATE.
Понять разницу между командами и определиться с их выбором поможет таблица с операторами каждого языка:
Таким образом, операторы DDL управляют структурой, а операторы DML — ее содержимым.
Как в MySQL очистить таблицу
Подключитесь к серверу по SSH. Затем подключитесь к MySQL при помощи команды:
mysql -u username -p’password’
Вместо username введите имя пользователя, вместо password — пароль.
Если вы не знаете пароль, попробуйте войти без него при помощи команды:
mysql
Если подключение без пароля не настроено, возникнет ошибка:
В этом случае сбросьте пароль от root-пользователя MySQL по инструкции.
TRUNCATE
TRUNCATE полностью очищает таблицу без возможности указать дополнительные условия. Для этого:
-
1
Выберите базу данных, в которой находится таблица, которую вы хотите очистить:
USE db_name;Вместо db_name введите имя базы данных.
-
2
Очистите таблицу при помощи команды:
TRUNCATE table_name;TRUNCATE позволяет указать название БД и название таблицы в одном запросе. Для этого используйте команду:
TRUNCATE db_name.table_name;Вместо db_name введите имя базы данных, а вместо table_name введите имя таблицы.
Готово, вы очистили таблицу.
DELETE
-
1
Выберите базу данных, в которой находится таблица, которую вы хотите очистить:
USE db_name;Вместо db_name введите имя базы данных.
-
2
Очистите таблицу при помощи команды:
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 отличается от команды DELETE?
TRUNCATE — это оператор DDL, который быстро удаляет все строки из таблицы, сбрасывает сбрасывает нумерацию записей и не запускает дополнительные скрипты. DELETE — это оператор DML, который удаляет строки одну за другой, позволяет использовать условия WHERE, запускает связанные скрипты и может быть отменен.
Что такое транзакция в MySQL?
Как удалить только часть данных?
Для удаления только части данных используйте команду DELETE с условием WHERE:
DELETE FROM название_таблицы WHERE название_столбца = 'значение'
Как создать резервную копию перед очисткой?
Способ 1 — экспорт в файл:
mysqldump -u имя_пользователя -p название_базы название_таблицы > резервная_копия.sql
Вместо имя _ пользователя, название_базы, название_таблицы и резервная_копия.sql подставьте свои значения.
Способ 2 — создать копию таблицы прямо в БД:
CREATE TABLE название_таблицы_копия SELECT * FROM название_таблицы
Вместо название_таблицы, название_таблицы_копия подставьте свои значения.
Как очистить несколько таблиц?
Способ 1 — последовательно:
TRUNCATE таблица_1;
TRUNCATE таблица_2;
TRUNCATE таблица_3;
Способ 2 — отключить проверку связей (если таблицы связаны):
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE таблица_1;
TRUNCATE таблица_2;
TRUNCATE таблица_3;
SET FOREIGN_KEY_CHECKS = 1;
Способ 3 — с условием (если нужно удалить не всё):
DELETE FROM заказы WHERE год = 2025;
DELETE FROM клиенты WHERE статус = 'неактивный';
DELETE FROM товары WHERE остаток = 0;
Вместо таблица_1, таблица_2, таблица_3, заказы, клиенты, товары и условий подставьте свои названия таблиц и условия.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊