Понякога може да се наложи да изтриете всички редове в таблица в MySQL база данни. Има няколко начина да го направите с помощта на изрази TRUNCATE TABLE, DROP TABLE и DELETE. В тази статия ще разгледаме как да съкратим таблицата в MySQL с помощта на израза MySQL TRUNCATE TABLE.
Как да съкратим таблица в MySQL
Ето как да съкратите таблицата в MySQL с помощта на израза TRUNCATE TABLE. Ето синтаксиса на израза MySQL TRUNCATE TABLE.
TRUNCATE [TABLE] table_name;
В горната заявка трябва да посочите името на вашата таблица, която да бъде съкратена, на мястото на име_на_таблица.
Ключовата дума TABLE не е задължителна след TRUNCATE.
Бонус четене:MySQL DROP VIEW
Примери за ТАБЛИЦА ЗА ОТСЪЖАНЕ на MySQL
Да приемем, че имате поръчките на таблицата в MySQL.
mysql> create table daily_orders(id int, order_date date,amount int); mysql> insert into daily_orders(id, order_date, amount) values(1, '2020-07-01',250),(2,'2020-07-02',320), (3,'2020-07-03',450); mysql> select * from daily_orders; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2020-07-01 | 250 | | 2 | 2020-07-02 | 320 | | 3 | 2020-07-03 | 450 | +------+------------+--------+
Ето SQL заявката за съкращаване на таблица в MySQL.
mysql> truncate table daily_orders; mysql> select * from daily_orders; Empty set (0.00 sec)
Бонус четене:Как да създадете индекс в MySQL
MySQL TRUNCATE срещу DELETE
TRUNCATE TABLE е подобен на израза DELETE в MySQL. Има обаче няколко ключови разлики. Ето разликата между TRUNCATE и DELETE в MySQL.
Изтриване на MySQL
- DELETE е израз на език за манипулиране на данни (DML). Изтрива един ред наведнъж. Така че се изпълнява чрез заключване на редове и всеки ред е заключен за изтриване
- Операциите ИЗТРИВАНЕ се регистрират
- Можете да посочите клауза WHERE в израза DELETE, за да изтриете само конкретни редове във вашата таблица
- DELETE е по-бавно от съкращаването, тъй като операциите за изтриване се регистрират в журнал
MYSQL TRUNCATE
- TRUNCATE е команда за език за описание на данни (DDL), която заключва таблицата за изтриване, но не и редовете.
- TRUNCATE премахва всички данни в таблицата. Така че не можете да посочите клауза WHERE в израза TRUNCATE.
- Операциите TRUNCATE не се регистрират и следователно са много по-бързи от оператора DELETE.
Отмяната е възможна както в операторите DELETE, така и в TRUNCATE.
Бонус за четене:Как да създадете съхранена процедура в MySQL
Как да съкратим таблица с външен ключ
Ако вашата таблица има ограничение за външен ключ, тогава когато изпълните оператор TRUNCATE за тази таблица, ще получите следната грешка.
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
Така че трябва да влезете в MySQL и да деактивирате проверките на външни ключове, преди да съкратите таблиците, като използвате следната команда
SET FOREIGN_KEY_CHECKS=0;
След като съкратите таблиците, активирайте отново проверките на външни ключове
SET FOREIGN_KEY_CHECKS=1;
Бонус за четене:Как да създадете потребител в MySQL
Как да съкратите всички таблици в MySQL
MySQL TRUNCATE TABLE ви позволява да изтривате само една таблица в даден момент. Така че, ако искате да изтриете няколко таблици, трябва да издадете отделни команди TRUNCATE TABLE. Ето пример за съкращаване на множество таблици table1, table2, table3, …
mysql> TRUNCATE TABLE table1; mysql> TRUNCATE TABLE table2; mysql> TRUNCATE TABLE table3;
Бонус четене:Как да създадете база данни в MySQL
Ето SQL заявка за генериране на множество изрази TRUNCATE TABLE, като се използват имената на таблиците във вашата база данни. Заменете DATABASE_NAME в следната заявка с името на вашата база данни.
mysql> SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES where table_schema in ('sample'); +------------------------------------------------------------+ | Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';') | +------------------------------------------------------------+ | TRUNCATE TABLE sample.a; | | TRUNCATE TABLE sample.calendar; | | TRUNCATE TABLE sample.categories; | | TRUNCATE TABLE sample.daily_orders; | | TRUNCATE TABLE sample.login; | | TRUNCATE TABLE sample.meeting; | | TRUNCATE TABLE sample.order_status; | | TRUNCATE TABLE sample.orders; | | TRUNCATE TABLE sample.orders2; | | TRUNCATE TABLE sample.orders3; | | TRUNCATE TABLE sample.product_sales; | | TRUNCATE TABLE sample.products; | | TRUNCATE TABLE sample.sales; | | TRUNCATE TABLE sample.user_data; | | TRUNCATE TABLE sample.users; | +------------------------------------------------------------+
Използвайте горния резултат от заявката, за да съкратите всички таблици в базата данни. Надяваме се, че сега можете да съкратите таблицата в MySQL
Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!