Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie man Tabellen in MySQL abschneidet

Manchmal müssen Sie möglicherweise alle Zeilen in einer Tabelle in der MySQL-Datenbank löschen. Es gibt mehrere Möglichkeiten, dies mit den Anweisungen TRUNCATE TABLE, DROP TABLE und DELETE zu tun. In diesem Artikel werden wir uns ansehen, wie man Tabellen in MySQL mit der MySQL TRUNCATE TABLE-Anweisung abschneidet.

Wie man Tabellen in MySQL abschneidet

So kürzen Sie eine Tabelle in MySQL mit der TRUNCATE TABLE-Anweisung. Hier ist die Syntax der MySQL TRUNCATE TABLE-Anweisung.

TRUNCATE [TABLE] table_name;

In der obigen Abfrage müssen Sie Ihren zu kürzenden Tabellennamen anstelle von table_name. angeben

Das Schlüsselwort TABLE ist optional nach TRUNCATE.

Bonuslektüre:MySQL DROP VIEW

Beispiele für MySQL TRUNCATE TABLE

Nehmen wir an, Sie haben die Tabelle orders 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 ist die SQL-Abfrage zum Abschneiden der Tabelle in MySQL.

mysql> truncate table daily_orders;

mysql> select * from daily_orders;
Empty set (0.00 sec)

Bonuslektüre:So erstellen Sie einen Index in MySQL

MySQL TRUNCATE vs. LÖSCHEN

TRUNCATE TABLE ähnelt der DELETE-Anweisung in MySQL. Es gibt jedoch ein paar wesentliche Unterschiede. Hier ist der Unterschied zwischen TRUNCATE und DELETE in MySQL.

MySQL LÖSCHEN

  • DELETE ist eine DML-Anweisung (Data Manipulation Language). Es löscht jeweils eine Zeile. Es wird also mit Zeilensperre ausgeführt, und jede Zeile ist zum Löschen gesperrt
  • DELETE-Vorgänge werden protokolliert
  • Sie können die WHERE-Klausel in der DELETE-Anweisung angeben, um nur bestimmte Zeilen in Ihrer Tabelle zu löschen
  • DELETE ist langsamer als truncate, da Löschvorgänge protokolliert werden

MySQL TRUNCATE

  • TRUNCATE ist ein DDL-Befehl (Data Description Language), der die Tabelle zum Löschen sperrt, aber nicht die Zeilen.
  • TRUNCATE entfernt alle Daten in der Tabelle. Daher können Sie in der TRUNCATE-Anweisung keine WHERE-Klausel angeben.
  • TRUNCATE-Operationen werden nicht protokolliert und sind daher viel schneller als DELETE-Anweisungen.

Rollback ist sowohl in DELETE- als auch in TRUNCATE-Anweisungen möglich.

Bonuslektüre:So erstellen Sie gespeicherte Prozeduren in MySQL

Tabelle mit Fremdschlüssel abschneiden

Wenn Ihre Tabelle eine Fremdschlüsselbeschränkung hat, erhalten Sie beim Ausführen der TRUNCATE-Anweisung für diese Tabelle den folgenden Fehler.

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key 
constraint fails

Sie müssen sich also bei MySQL anmelden und Fremdschlüsselprüfungen deaktivieren, bevor Sie Tabellen kürzen, indem Sie den folgenden Befehl verwenden

SET FOREIGN_KEY_CHECKS=0;

Nachdem Sie Tabellen gekürzt haben, aktivieren Sie die Fremdschlüsselprüfung wieder

SET FOREIGN_KEY_CHECKS=1;

Bonuslektüre:So erstellen Sie Benutzer in MySQL

Wie man alle Tabellen in MySQL abschneidet

Mit MySQL TRUNCATE TABLE können Sie jeweils nur eine Tabelle löschen. Wenn Sie also mehrere Tabellen löschen möchten, müssen Sie separate TRUNCATE TABLE-Befehle absetzen. Hier ist ein Beispiel zum Abschneiden mehrerer Tabellen table1, table2, table3, …

mysql> TRUNCATE TABLE table1;
mysql> TRUNCATE TABLE table2;
mysql> TRUNCATE TABLE table3;

Bonuslektüre:So erstellen Sie eine Datenbank in MySQL

Hier ist eine SQL-Abfrage zum Generieren mehrerer TRUNCATE TABLE-Anweisungen unter Verwendung der Tabellennamen in Ihrer Datenbank. Ersetzen Sie DATABASE_NAME in der folgenden Abfrage durch Ihren Datenbanknamen.

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;                               |
+------------------------------------------------------------+

Verwenden Sie das obige Abfrageergebnis, um alle Tabellen in der Datenbank zu kürzen. Hoffentlich können Sie jetzt Tabellen in MySQL abschneiden

Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!