Ibland kan du behöva ta bort alla rader i en tabell i MySQL-databasen. Det finns flera sätt att göra det med TRUNCATE TABLE, DROP TABLE och DELETE-satser. I den här artikeln kommer vi att titta på hur man trunkerar tabeller i MySQL med MySQL TRUNCATE TABLE-satsen.
Hur man trunkerar tabell i MySQL
Så här trunkerar du tabell i MySQL med TRUNCATE TABLE-satsen. Här är syntaxen för MySQL TRUNCATE TABLE-satsen.
TRUNCATE [TABLE] table_name;
I ovanstående fråga måste du ange ditt tabellnamn som ska trunkeras, istället för tabellnamn.
Nyckelordet TABLE är valfritt efter TRUNCATE.
Bonus Läs:MySQL DROP VIEW
Exempel på MySQL TRUNCATE TABELL
Låt oss säga att du har bordsbeställningarna i 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 | +------+------------+--------+
Här är SQL-frågan för att trunkera tabellen i MySQL.
mysql> truncate table daily_orders; mysql> select * from daily_orders; Empty set (0.00 sec)
Bonus Läs:Hur man skapar index i MySQL
MySQL TRUNCATE vs DELETE
TRUNCATE TABLE liknar DELETE-satsen i MySQL. Det finns dock några viktiga skillnader. Här är skillnaden mellan TRUNCATE och DELETE i MySQL.
MySQL DELETE
- DELETE är en DML-sats (Data manipulation language). Den raderar en rad i taget. Så det körs med radlås, och varje rad är låst för radering
- DELETE-åtgärder loggas
- Du kan ange WHERE-satsen i DELETE-satsen för att bara ta bort specifika rader i tabellen
- DELETE är långsammare än trunkering eftersom borttagningsåtgärder loggas
MySQL TRUNCATE
- TRUNCATE är ett DDL-kommando (Data Description Language) som låser tabellen för radering men inte raderna.
- TRUNCATE tar bort all data i tabellen. Så du kan inte ange WHERE-satsen i TRUNCATE-satsen.
- TRUNCATE-operationer loggas inte och är därför mycket snabbare än DELETE-satsen.
Återställning är möjlig i både DELETE- och TRUNCATE-satser.
Bonus Läs:Hur man skapar lagrad procedur i MySQL
Hur man trunkerar tabell med främmande nyckel
Om din tabell har en begränsning av främmande nyckel kommer du att få följande fel när du kör TRUNCATE-satsen för den tabellen.
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
Så du måste logga in på MySQL och inaktivera kontroller av främmande nyckel innan du trunkerar tabeller, med följande kommando
SET FOREIGN_KEY_CHECKS=0;
När du har trunkerat tabeller, återaktivera kontroller av främmande nyckel
SET FOREIGN_KEY_CHECKS=1;
Bonus Läs:Hur man skapar användare i MySQL
Hur man trunkerar alla tabeller i MySQL
MySQL TRUNCATE TABLE låter dig ta bort endast en tabell åt gången. Så om du vill ta bort flera tabeller måste du utfärda separata TRUNCATE TABLE-kommandon. Här är ett exempel för att trunkera flera tabeller tabell1, tabell2, tabell3, …
mysql> TRUNCATE TABLE table1; mysql> TRUNCATE TABLE table2; mysql> TRUNCATE TABLE table3;
Bonus Läs:Hur man skapar en databas i MySQL
Här är en SQL-fråga för att generera flera TRUNCATE TABLE-satser, med hjälp av tabellnamnen i din databas. Ersätt DATABASE_NAME i följande fråga med ditt databasnamn.
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; | +------------------------------------------------------------+
Använd ovanstående frågeresultat för att trunkera alla tabeller i databasen. Förhoppningsvis kan du nu trunkera tabellen i MySQL
Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!