sql >> Databáze >  >> RDS >> Mysql

Jak zkrátit tabulku v MySQL

Někdy může být nutné odstranit všechny řádky v tabulce v databázi MySQL. Existuje několik způsobů, jak to provést pomocí příkazů TRUNCATE TABLE, DROP TABLE a DELETE. V tomto článku se podíváme na to, jak zkrátit tabulku v MySQL pomocí příkazu MySQL TRUNCATE TABLE.

Jak zkrátit tabulku v MySQL

Zde je návod, jak zkrátit tabulku v MySQL pomocí příkazu TRUNCATE TABLE. Zde je syntaxe příkazu MySQL TRUNCATE TABLE.

TRUNCATE [TABLE] table_name;

Ve výše uvedeném dotazu musíte místo název_tabulky zadat název tabulky, která má být zkrácena.

Klíčové slovo TABLE je po TRUNCATE volitelné.

Bonusové čtení:MySQL DROP VIEW

Příklady TRUNCATE TABLE MySQL

Řekněme, že máte tabulku objednávky v 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 |
+------+------------+--------+

Zde je dotaz SQL pro zkrácení tabulky v MySQL.

mysql> truncate table daily_orders;

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

Bonusové čtení:Jak vytvořit index v MySQL

MySQL TRUNCATE vs DELETE

TRUNCATE TABLE je podobný příkazu DELETE v MySQL. Existuje však několik klíčových rozdílů. Zde je rozdíl mezi TRUNCATE a DELETE v MySQL.

DELETE MySQL

  • DELETE je příkaz jazyka DML (Data manipulation language). Maže vždy jeden řádek. Provádí se tedy pomocí zámku řádku a každý řádek je uzamčen pro odstranění
  • Operace DELETE jsou protokolovány
  • Můžete zadat klauzuli WHERE v příkazu DELETE a odstranit pouze určité řádky v tabulce.
  • DELETE je pomalejší než zkrácení, protože operace odstranění jsou protokolovány

ZKRÁCENÍ MySQL

  • TRUNCATE je příkaz DDL (Data Description Language), který uzamkne tabulku pro odstranění, nikoli však řádky.
  • TRUNCATE odstraní všechna data v tabulce. Nemůžete tedy zadat klauzuli WHERE v příkazu TRUNCATE.
  • Operace TRUNCATE nejsou protokolovány, a proto jsou mnohem rychlejší než příkaz DELETE.

Vrácení zpět je možné v příkazech DELETE i TRUNCATE.

Bonusové čtení:Jak vytvořit uloženou proceduru v MySQL

Jak zkrátit tabulku pomocí cizího klíče

Pokud má vaše tabulka omezení cizího klíče, pak když pro tuto tabulku spustíte příkaz TRUNCATE, zobrazí se následující chyba.

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

Musíte se tedy přihlásit do MySQL a deaktivovat kontroly cizích klíčů před zkrácením tabulek pomocí následujícího příkazu

SET FOREIGN_KEY_CHECKS=0;

Po zkrácení tabulek znovu povolte kontroly cizích klíčů

SET FOREIGN_KEY_CHECKS=1;

Bonusové čtení:Jak vytvořit uživatele v MySQL

Jak zkrátit všechny tabulky v MySQL

MySQL TRUNCATE TABLE umožňuje mazat pouze jednu tabulku najednou. Pokud tedy chcete odstranit více tabulek, musíte zadat samostatné příkazy TRUNCATE TABLE. Zde je příklad zkrácení více tabulek table1, table2, table3, …

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

Bonusové čtení:Jak vytvořit databázi v MySQL

Zde je dotaz SQL pro generování více příkazů TRUNCATE TABLE pomocí názvů tabulek ve vaší databázi. Nahraďte DATABASE_NAME v následujícím dotazu názvem vaší databáze.

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

Použijte výše uvedený výsledek dotazu ke zkrácení všech tabulek v databázi. Doufejme, že nyní můžete zkrátit tabulku v MySQL

Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Vyzkoušejte to ještě dnes!

  1. Parametrizovaný dotaz v potížích s Oracle

  2. Dočasně deaktivujte všechna omezení cizího klíče

  3. Plánované spuštění uložené procedury na SQL serveru

  4. Pomalý dotaz při použití ORDER BY