Lệnh TRUNCATE
và DELETE
trong SQL đều được sử dụng để xóa dữ liệu khỏi bảng, nhưng chúng có những đặc điểm và hành vi khác nhau rất đáng chú ý:
1. Định nghĩa và Loại Lệnh
- DELETE: Là một lệnh thuộc loại DML (Data Manipulation Language), cho phép xóa các bản ghi cụ thể từ một bảng. Bạn có thể sử dụng điều kiện
WHERE
để lọc và xóa chỉ những bản ghi thỏa mãn điều kiện đó.
- TRUNCATE: Là một lệnh thuộc loại DDL (Data Definition Language), được sử dụng để xóa sạch tất cả các bản ghi trong một bảng một cách nhanh chóng và không thể hoàn tác (trong hầu hết các RDBMS).
2. Sử dụng Tài Nguyên và Khóa
- DELETE: Xóa từng bản ghi một và ghi lại mỗi hành động xóa trong nhật ký giao dịch, do đó nó cần nhiều khóa và tài nguyên hơn.
- TRUNCATE: Xóa dữ liệu bằng cách giải phóng các trang dữ liệu mà không ghi chi tiết từng bản ghi đã xóa vào nhật ký giao dịch, do đó nó nhanh hơn và ít tốn tài nguyên hơn.
3. WHERE Clause
- DELETE: Có thể sử dụng
WHERE
clause để xác định các bản ghi cụ thể cần xóa.
- TRUNCATE: Không sử dụng
WHERE
clau...