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!