sql >> Database teknologi >  >> RDS >> Mysql

Sådan afkortes tabel i MySQL

Nogle gange skal du muligvis slette alle rækker i en tabel i MySQL-databasen. Der er flere måder at gøre det på ved at bruge TRUNCATE TABLE, DROP TABLE og DELETE-sætninger. I denne artikel vil vi se på, hvordan man trunkerer tabel i MySQL ved hjælp af MySQL TRUNCATE TABLE-sætning.

Sådan afkortes tabel i MySQL

Her er, hvordan du afkorter tabel i MySQL ved hjælp af TRUNCATE TABLE-sætning. Her er syntaksen for MySQL TRUNCATE TABLE-sætning.

TRUNCATE [TABLE] table_name;

I ovenstående forespørgsel skal du angive dit tabelnavn, der skal afkortes, i stedet for tabelnavn.

Søgeordet TABLE er valgfrit efter TRUNCATE.

Bonus Læs:MySQL DROP VIEW

Eksempler på MySQL TRUNCATE TABLE

Lad os sige, at du har bordets ordrer 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 |
+------+------------+--------+

Her er SQL-forespørgslen til at afkorte tabel i MySQL.

mysql> truncate table daily_orders;

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

Bonus Læs:Sådan opretter du indeks i MySQL

MySQL TRUNCATE vs DELETE

TRUNCATE TABLE ligner DELETE-sætningen i MySQL. Der er dog et par vigtige forskelle. Her er forskellen mellem TRUNCATE og DELETE i MySQL.

MySQL SLET

  • DELETE er en DML-sætning (Data manipulation language). Den sletter en række ad gangen. Så det udføres ved hjælp af rækkelås, og hver række er låst til sletning
  • SLETTE-handlinger logges
  • Du kan angive WHERE-sætning i DELETE-sætningen for kun at slette specifikke rækker i din tabel
  • DELETE er langsommere end afkortning, da slettehandlinger logges

MySQL TRUNCATE

  • TRUNCATE er en DDL-kommando (Data Description Language), som låser tabellen til sletning, men ikke rækkerne.
  • TRUNCATE fjerner alle data i tabellen. Så du kan ikke angive WHERE-sætning i TRUNCATE-sætningen.
  • TRUNCATE-handlinger logges ikke og er derfor meget hurtigere end DELETE-sætning.

Tilbageføring er mulig i både DELETE- og TRUNCATE-udsagn.

Bonus Læs:Sådan opretter du lagret procedure i MySQL

Sådan afkortes tabel med fremmednøgle

Hvis din tabel har en fremmednøgle-begrænsning, vil du få følgende fejl, når du kører TRUNCATE-sætningen for den tabel.

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

Så du skal logge ind på MySQL og deaktivere tjek af fremmed nøgle, før du trunkerer tabeller ved at bruge følgende kommando

SET FOREIGN_KEY_CHECKS=0;

Når du har afkortet tabeller, skal du genaktivere kontrol af fremmednøgle

SET FOREIGN_KEY_CHECKS=1;

Bonuslæser:Sådan opretter du bruger i MySQL

Sådan afkortes alle tabeller i MySQL

MySQL TRUNCATE TABLE giver dig mulighed for kun at slette én tabel ad gangen. Så hvis du vil slette flere tabeller, skal du udstede separate TRUNCATE TABLE-kommandoer. Her er et eksempel på at afkorte flere tabeller tabel1, tabel2, tabel3, …

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

Bonus Læs:Sådan opretter du database i MySQL

Her er en SQL-forespørgsel til at generere flere TRUNCATE TABLE-sætninger ved hjælp af tabelnavnene i din database. Erstat DATABASE_NAME i følgende forespørgsel med dit databasenavn.

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

Brug ovenstående forespørgselsresultat til at afkorte alle tabeller i databasen. Forhåbentlig kan du nu afkorte tabellen i MySQL

Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. SQLite - Opret en tabel

  2. 2 måder at returnere rækker, der kun indeholder alfanumeriske tegn i MariaDB

  3. MySQL - FEJL 1045 - Adgang nægtet

  4. SÆKKER LIKE vs iLIKE