- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[DATABASE] Sự khác nhau giữa hai câu lệnh TRUNCATE vs DELETE trong sqlserver
Xin chào các bạn, bài viết hôm nay mình sẻ nói về sự khác nhau giữa hai từ khóa TRUNCATE và DELETE trong cơ sở dữ liệu Sqlserver.
[DATABASE] Sự khác nhau giữa TRUNCATE vs DELETE trong SQL
Cả hai câu lệnh DELETE với TRUNCATE đều mang lại kết quả là xóa data của một bảng, tuy nhiên nếu đào sâu vào kết quả chúng lại có rất nhiều điểm khác nhau.
TRUNCATE là câu lệnh DDL, vậy nên đối tượng của nó là bảng. DELETE là câu lệnh DML nên đối tượng của nó là các dòng dữ liệu trong bảng.
1.TRUNCATE: TRUNCATE là một tuyên bố không ghi nhật ký (non-logged statement), nghĩa là nó không ghi lại mỗi thao tác xóa trong giao dịch nhật ký.
Điều này dẫn đến một số ưu điểm:
- TRUNCATE nhanh hơn DELETE: Do không cần ghi lại các hoạt động trong nhật ký, TRUNCATE thường nhanh hơn DELETE, đặc biệt là khi xóa một lượng lớn dữ liệu.
- Không có khả năng phục hồi: Vì TRUNCATE không ghi lại trong nhật ký, không thể hoàn tác thao tác TRUNCATE đã được thực hiện. Dữ liệu bị mất sẽ không thể khôi phục lại.
- Không kích hoạt trigger: Khi sử dụng TRUNCATE, các trigger (khi có) không được kích hoạt. Điều này có thể là một lợi ích hoặc hạn chế, phụ thuộc vào yêu cầu của ứng dụng.
Lưu ý: Trong câu lệnh TRUNCATE bạn chỉ có thể xóa hết dữ liệu của một bảng, không thể kết hợp với mệnh đề WHERE để xóa bảng dữ liệu có điều kiện.
2. DETELE
DELETE là một tuyên bố ghi nhật ký (logged statement), điều này có một số tác động quan trọng:
- Chậm hơn so với TRUNCATE: Do phải ghi lại các thao tác xóa trong nhật ký, DELETE thường chậm hơn TRUNCATE, đặc biệt là khi xóa một lượng lớn dữ liệu.
- Có khả năng phục hồi: Vì DELETE ghi lại trong nhật ký, thao tác DELETE có thể được hoàn tác bằng cách sử dụng các điểm phục hồi hoặc khôi phục từ bản sao dự phòng.
- Kích hoạt trigger: DELETE sẽ kích hoạt các trigger (khi có) trên bảng. Điều này cho phép thực hiện các hành động phụ hoặc xử lý dữ liệu liên quan.
Ví dụ: Giả sử chúng ta có một bảng "Employees" với các cột "EmployeeID", "FirstName" và "LastName" chứa thông tin nhân viên. Ta muốn xóa tất cả các dòng dữ liệu từ bảng này.
- Sử dụng TRUNCATE:
TRUNCATE TABLE Employees;
2. Sử dụng DELETE:
DELETE FROM Employees;
Cả hai câu lệnh trên sẽ xóa tất cả các dòng dữ liệu từ bảng "Employees".
Tuy nhiên, như đã đề cập, TRUNCATE có thể nhanh hơn DELETE và không ghi lại trong nhật ký, trong khi DELETE chậm hơn và ghi lại trong nhật ký, cho phép khôi phục lại dữ liệu nếu cần.
Lưu ý rằng TRUNCATE và DELETE đều là những thao tác mạnh mẽ và có thể xóa hoặc làm mất dữ liệu quan trọng. Hãy đảm bảo bạn đã sao lưu dữ liệu trước khi thực hiện các thao tác này và hãy cẩn thận khi sử dụng chúng.
Thanks for watching!