Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách cắt ngắn bảng trong MySQL

Đôi khi bạn có thể cần phải xóa tất cả các hàng trong một bảng trong cơ sở dữ liệu MySQL. Có nhiều cách để thực hiện việc này bằng cách sử dụng các câu lệnh TRUNCATE TABLE, DROP TABLE và DELETE. Trong bài viết này, chúng ta sẽ xem xét cách cắt ngắn bảng trong MySQL bằng cách sử dụng câu lệnh MySQL TRUNCATE TABLE.

Cách cắt ngắn bảng trong MySQL

Dưới đây là cách cắt ngắn bảng trong MySQL bằng cách sử dụng câu lệnh TRUNCATE TABLE. Đây là cú pháp của câu lệnh MySQL TRUNCATE TABLE.

TRUNCATE [TABLE] table_name;

Trong truy vấn trên, bạn cần chỉ định tên bảng của mình được cắt bớt, thay cho tên_bảng.

Từ khóa TABLE là tùy chọn sau TRUNCATE.

Phần thưởng đã đọc:CHẾ ĐỘ XEM DROP của MySQL

Ví dụ về BẢNG TRUNCATE trong MySQL

Giả sử bạn có bảng đơn đặt hàng trong 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 |
+------+------------+--------+

Đây là truy vấn SQL để cắt ngắn bảng trong MySQL.

mysql> truncate table daily_orders;

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

Phần thưởng đọc:Cách tạo chỉ mục trong MySQL

MySQL TRUNCATE so với DELETE

TRUNCATE TABLE tương tự như câu lệnh DELETE trong MySQL. Tuy nhiên, có một vài điểm khác biệt chính. Đây là sự khác biệt giữa TRUNCATE và DELETE trong MySQL.

XÓA MySQL

  • DELETE là một câu lệnh Ngôn ngữ thao tác dữ liệu (DML). Nó xóa từng hàng một. Vì vậy, nó được thực thi bằng cách sử dụng khóa hàng và mỗi hàng bị khóa để xóa
  • Các hoạt động DELETE được ghi lại
  • Bạn có thể chỉ định mệnh đề WHERE trong câu lệnh DELETE để chỉ xóa các hàng cụ thể trong bảng của mình
  • DELETE chậm hơn so với truncate vì các thao tác xóa được ghi lại

TRUNCATE của MySQL

  • TRUNCATE là lệnh Ngôn ngữ mô tả dữ liệu (DDL), lệnh này khóa bảng để xóa chứ không khóa các hàng.
  • TRUNCATE xóa tất cả dữ liệu trong bảng. Vì vậy, bạn không thể chỉ định mệnh đề WHERE trong câu lệnh TRUNCATE.
  • Các hoạt động TRUNCATE không được ghi lại và do đó nhanh hơn nhiều so với câu lệnh DELETE.

Có thể khôi phục trong cả câu lệnh DELETE và TRUNCATE.

Phần thưởng đọc:Cách tạo thủ tục được lưu trữ trong MySQL

Cách cắt ngắn bảng bằng khóa ngoại

Nếu bảng của bạn có ràng buộc khóa ngoại, thì khi bạn chạy câu lệnh TRUNCATE cho bảng đó, bạn sẽ gặp lỗi sau.

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

Vì vậy, bạn cần đăng nhập vào MySQL và tắt kiểm tra Khóa ngoại trước khi cắt bớt bảng, sử dụng lệnh sau

SET FOREIGN_KEY_CHECKS=0;

Sau khi bạn cắt bớt bảng, hãy bật lại kiểm tra khóa ngoại

SET FOREIGN_KEY_CHECKS=1;

Phần thưởng đã đọc:Cách tạo người dùng trong MySQL

Cách cắt ngắn tất cả các bảng trong MySQL

MySQL TRUNCATE TABLE cho phép bạn chỉ xóa một bảng tại một thời điểm. Vì vậy, nếu bạn muốn xóa nhiều bảng, bạn cần đưa ra các lệnh TRUNCATE TABLE riêng biệt. Đây là một ví dụ để cắt bớt nhiều bảng table1, table2, table3,…

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

Phần thưởng đọc:Cách tạo cơ sở dữ liệu trong MySQL

Đây là truy vấn SQL để tạo nhiều câu lệnh TRUNCATE TABLE, sử dụng tên bảng trong cơ sở dữ liệu của bạn. Thay thế DATABASE_NAME trong truy vấn sau bằng tên cơ sở dữ liệu của bạn.

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

Sử dụng kết quả truy vấn trên để cắt ngắn tất cả các bảng trong cơ sở dữ liệu. Hy vọng rằng bây giờ bạn có thể cắt ngắn bảng trong MySQL

Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sao chép bảng trong MySQL

  2. Tách một chuỗi và lặp qua các giá trị trong Thủ tục MySql

  3. MySQL Great Circle Khoảng cách (công thức Haversine)

  4. Làm cách nào để xóa các ký tự dòng mới khỏi các hàng dữ liệu trong mysql?

  5. Chuyển đổi tem DateTime của MySql thành định dạng Ngày của JavaScript