Czasami może być konieczne usunięcie wszystkich wierszy w tabeli w bazie danych MySQL. Można to zrobić na wiele sposobów za pomocą instrukcji TRUNCATE TABLE, DROP TABLE i DELETE. W tym artykule przyjrzymy się, jak przyciąć tabelę w MySQL za pomocą instrukcji MySQL TRUNCATE TABLE.
Jak skrócić tabelę w MySQL
Oto jak przyciąć tabelę w MySQL za pomocą instrukcji TRUNCATE TABLE. Oto składnia instrukcji MySQL TRUNCATE TABLE.
TRUNCATE [TABLE] table_name;
W powyższym zapytaniu musisz określić nazwę tabeli, która ma zostać skrócona, zamiast nazwa_tabeli.
Słowo kluczowe TABLE jest opcjonalne po TRUNCATE.
Przeczytaj bonus:MySQL DROP VIEW
Przykłady MySQL TRUNCATE TABLE
Załóżmy, że masz tabelę zamówienia w 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 | +------+------------+--------+
Oto zapytanie SQL do obcięcia tabeli w MySQL.
mysql> truncate table daily_orders; mysql> select * from daily_orders; Empty set (0.00 sec)
Przeczytaj bonus:Jak utworzyć indeks w MySQL
MySQL TRUNCATE vs DELETE
TRUNCATE TABLE jest podobna do instrukcji DELETE w MySQL. Istnieje jednak kilka kluczowych różnic. Oto różnica między TRUNCATE i DELETE w MySQL.
Usuń MySQL
- DELETE to instrukcja języka manipulacji danymi (DML). Usuwa jeden wiersz na raz. Jest to więc wykonywane przy użyciu blokady wiersza, a każdy wiersz jest blokowany do usunięcia
- Operacje DELETE są rejestrowane
- Możesz określić klauzulę WHERE w instrukcji DELETE, aby usunąć tylko określone wiersze z tabeli
- DELETE jest wolniejsze niż obcinanie, ponieważ operacje usuwania są rejestrowane
MySQL OBCIĄGNIĘTY
- TRUNCATE to polecenie Data Description Language (DDL), które blokuje tabelę do usunięcia, ale nie wiersze.
- TRUNCATE usuwa wszystkie dane z tabeli. Nie możesz więc określić klauzuli WHERE w instrukcji TRUNCATE.
- Operacje TRUNCATE nie są rejestrowane i dlatego są znacznie szybsze niż instrukcja DELETE.
Wycofanie zmian jest możliwe zarówno w instrukcjach DELETE, jak i TRUNCATE.
Przeczytaj bonus:Jak utworzyć procedurę składowaną w MySQL
Jak skrócić tabelę za pomocą klucza obcego
Jeśli twoja tabela ma ograniczenie klucza obcego, to po uruchomieniu instrukcji TRUNCATE dla tej tabeli otrzymasz następujący błąd.
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
Musisz więc zalogować się do MySQL i wyłączyć sprawdzanie kluczy obcych przed obcięciem tabel za pomocą następującego polecenia
SET FOREIGN_KEY_CHECKS=0;
Po obcięciu tabel ponownie włącz sprawdzanie kluczy obcych
SET FOREIGN_KEY_CHECKS=1;
Przeczytaj bonus:Jak utworzyć użytkownika w MySQL
Jak przyciąć wszystkie tabele w MySQL
MySQL TRUNCATE TABLE umożliwia jednoczesne usunięcie tylko jednej tabeli. Więc jeśli chcesz usunąć wiele tabel, musisz wydać osobne polecenia TRUNCATE TABLE. Oto przykład obcinania wielu tabel table1, table2, table3, …
mysql> TRUNCATE TABLE table1; mysql> TRUNCATE TABLE table2; mysql> TRUNCATE TABLE table3;
Przeczytaj bonus:Jak stworzyć bazę danych w MySQL
Oto zapytanie SQL generujące wiele instrukcji TRUNCATE TABLE przy użyciu nazw tabel w Twojej bazie danych. Zastąp DATABASE_NAME w następującym zapytaniu nazwą swojej bazy danych.
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; | +------------------------------------------------------------+
Użyj powyższego wyniku zapytania, aby obciąć wszystkie tabele w bazie danych. Mam nadzieję, że teraz możesz obcinać tabelę w MySQL
Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!