Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przyciąć tabelę w MySQL

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ś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj relacyjnych baz danych MySQL w Debianie 5 (Lenny)

  2. Wybierz z jednej tabeli, gdzie nie w innej

  3. 3 sposoby na wykrycie, czy ciąg pasuje do wyrażenia regularnego w MySQL

  4. Pierwsza kolumna o wyższej kardynalności w indeksie, gdy dotyczy zakresu?

  5. Używanie pliku .php do generowania zrzutu MySQL