Soms moet u mogelijk alle rijen in een tabel in de MySQL-database verwijderen. Er zijn meerdere manieren om dit te doen met TRUNCATE TABLE, DROP TABLE en DELETE-statements. In dit artikel zullen we bekijken hoe u een tabel in MySQL kunt afkappen met behulp van de MySQL TRUNCATE TABLE-instructie.
Hoe een tabel in MySQL af te kappen
Hier leest u hoe u de tabel in MySQL kunt afkappen met behulp van de TRUNCATE TABLE-instructie. Dit is de syntaxis van de MySQL TRUNCATE TABLE-instructie.
TRUNCATE [TABLE] table_name;
In de bovenstaande query moet u de tabelnaam opgeven die moet worden afgekapt, in plaats van table_name.
Het trefwoord TABLE is optioneel na TRUNCATE.
Bonus lezen:MySQL DROP VIEW
MySQL TRUNCATE TABLE-voorbeelden
Laten we zeggen dat u de tafel bestellingen . heeft in 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 | +------+------------+--------+
Hier is de SQL-query om de tabel in MySQL af te kappen.
mysql> truncate table daily_orders; mysql> select * from daily_orders; Empty set (0.00 sec)
Bonus Lezen:Index maken in MySQL
MySQL TRUNCATE vs DELETE
TRUNCATE TABLE is vergelijkbaar met de DELETE-instructie in MySQL. Er zijn echter een paar belangrijke verschillen. Dit is het verschil tussen TRUNCATE en DELETE in MySQL.
MySQL VERWIJDEREN
- DELETE is een DML-instructie (Datamanipulatietaal). Het verwijdert één rij tegelijk. Het wordt dus uitgevoerd met rijvergrendeling en elke rij is vergrendeld voor verwijdering
- VERWIJDER-bewerkingen zijn vastgelegd
- U kunt de WHERE-component in de DELETE-instructie specificeren om alleen specifieke rijen in uw tabel te verwijderen
- VERWIJDEREN is langzamer dan afkappen omdat verwijderingsbewerkingen zijn vastgelegd
MySQL TRUNCATE
- TRUNCATE is een Data Description Language (DDL)-opdracht die de tabel vergrendelt voor verwijdering, maar niet de rijen.
- TRUNCATE verwijdert alle gegevens in de tabel. U kunt dus de WHERE-component niet specificeren in de TRUNCATE-instructie.
- TRUNCATE-bewerkingen worden niet gelogd en zijn daarom veel sneller dan de DELETE-instructie.
Terugdraaien is mogelijk in zowel DELETE- als TRUNCATE-instructies.
Bonus lezen:Opgeslagen procedure maken in MySQL
Hoe een tabel af te kappen met een externe sleutel
Als uw tabel een externe sleutelbeperking heeft, krijgt u de volgende foutmelding wanneer u de TRUNCATE-instructie voor die tabel uitvoert.
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
U moet dus inloggen op MySQL en Foreign Key-controles uitschakelen voordat u tabellen afkapt, met behulp van de volgende opdracht
SET FOREIGN_KEY_CHECKS=0;
Nadat u tabellen heeft afgekapt, schakelt u controles op buitenlandse sleutels opnieuw in
SET FOREIGN_KEY_CHECKS=1;
Bonus lezen:een gebruiker maken in MySQL
Alle tabellen in MySQL afkappen
Met MySQL TRUNCATE TABLE kunt u slechts één tabel tegelijk verwijderen. Dus als u meerdere tabellen wilt verwijderen, moet u afzonderlijke TRUNCATE TABLE-opdrachten geven. Hier is een voorbeeld om meerdere tabellen af te kappen table1, table2, table3, …
mysql> TRUNCATE TABLE table1; mysql> TRUNCATE TABLE table2; mysql> TRUNCATE TABLE table3;
Bonus Lezen:Database maken in MySQL
Hier is een SQL-query om meerdere TRUNCATE TABLE-instructies te genereren, met behulp van de tabelnamen in uw database. Vervang DATABASE_NAME in de volgende query door uw databasenaam.
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; | +------------------------------------------------------------+
Gebruik het bovenstaande queryresultaat om alle tabellen in de database af te kappen. Hopelijk kun je nu de tabel in MySQL afkappen
Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!