Phân Biệt Truncate Và Delete Trong Sql - Viblo
Có thể bạn quan tâm
Bài đăng này đã không được cập nhật trong 7 năm
- DELETE
- Cú pháp: DELETE FROM table_name WHERE condition;
- Hoặc nếu muốn xóa cả bảng thì chúng ta có cú pháp: DELETE FROM table_name;
- Khi chạy lệnh DELETE thì SQL sẽ log lại từng dòng đã xóa vào transaction log, vì thế nên khi bạn tạo 1 record mới, giá trị của id sẽ không bắt đầu từ 1 mà sẽ có giá trị n+1 với n là giá trị của record cuối cùng được tạo.
- Ví dụ:
Chạy lệnh DELETE from products where productCode = 'S10_1678'; 
- select * from products where productCode = 'S10_1678';

- Vậy là giá trị productCode = 'S10_1678' đã bị xóa khỏi DB;
- Tiếp đến là ví dụ về xóa cả bảng với DELETE
- delete from products;

- Và bây giờ bảng đã trống trơn

- TRUNCATE
- Cú pháp: TRUNCATE TABLE table_name;
- Đối với TRUNCATE chúng ta chỉ có thể dùng cho bảng chứ không thể dùng cho từng record.
- Khi chạy lệnh TRUNCATE thì SQL sẽ xóa hết dữ liệu của bảng và reset transaction log, vì thế khi tạo 1 record mới, giá trị cua id sẽ bắt đầu từ 1, đây cũng chính là khác biệt lớn nhất của DELETE và TRUNCATE.
- Ví dụ
- Chúng ta sẽ chạy lệnh TRUNCATE table products với bảng ví dụ ở trên

- Như các bạn có thể thấy bản chất câu lệnh DELETE là xóa từng row khi có 109 rows đã bị tác động còn TRUNCATE đơn giản là xóa cả 1 dữ liệu của 1 bảng không kể số lượng dòng khi có 0 rows đã bị tác động.
- 1 vài điều lưu ý
- TRUNCATE không thể chạy được khi bảng bạn định xóa có foreign_key (nếu bảng đó có foreign_key trỏ đến chính nó thì bạn có thể xóa bình thường)
- Dữ liệu bị xóa bởi DELETE có thể restored được còn TRUNCATE thì không.
- Tùy vào từng trường hợp thì bạn sẽ dùng DELETE hoặc TRUNCATE, TRUNCATE sẽ luôn nhanh hơn vì nó tiêu tốn ít bộ nhớ hơn, các bạn có thể cân nhắc điều này khi cần xóa 1 bảng lớn vs nhiều record.
All rights reserved
Từ khóa » Trong Mysql Câu Lệnh Nào Vừa Xóa Dữ Liệu Của Bảng Vừa Xóa Luôn Bảng
-
Trong MySQL, Câu Lệnh Nào Vừa Xóa Dữ Liệu ... - Trắc Nghiệm Online
-
Trong MySQL, Câu Lệnh Nào Vừa Xóa Dữ Liệu Của Bảng, Vừa Xóa ...
-
Trong MySQL, Câu Lệnh Nào Vừa Xóa Dữ Liệu Của ...
-
Mệnh đề DELETE Xóa Dữ Liệu Trong SQL
-
(DELETE) Xóa Dữ Liệu Của Bảng Trong MySQL - Web Cơ Bản
-
Trong MySQL, Câu Lệnh USE | 7scv: Học Các Môn Từ Lớp 1 đến Lớp 12
-
Cách Xóa Bảng Trong MySQL - Geek Geeky
-
Lệnh DROP TABLE Hay DELETE TABLE Trong SQL
-
Sửa Các Câu Lệnh SQL để Tinh Chỉnh Kết Quả Truy Vấn
-
Dùng Một Truy Vấn Hợp để Kết Hợp Nhiều Truy Vấn Vào Một Kết Quả đơn
-
Xóa Dữ Liệu Khỏi Tất Cả Các Bảng Trong MYSQL - HelpEx
-
Sql Là Gì? 6 Lý Do Tại Sao Bạn Nên Học SQL | TopDev
-
Một Số Lệnh Quản Lý MySQL Bạn Nên Biết
-
Update Dữ Liệu Vào Database Bằng PHP - Lập Trình Từ Đầu