sql >> Database >  >> RDS >> Mysql

Tabel afkappen in MySQL

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!

  1. Oracle-parameters met IN-instructie?

  2. C# - Hoe een orakel lange onbewerkte typewaarde te krijgen

  3. 2 Functies die de naam van de maand retourneren van een datum in MySQL

  4. MySQL Update Inner Join tabellen-query