Sự khác biệt giữa xóa và truncate

Anonim

Xóa so với cắt ngắn

Cả hai lệnh SQL (Cấu trúc Truy vấn Ngôn ngữ), Xóa và Truncate được sử dụng để loại bỏ dữ liệu được lưu trữ trong các bảng trong cơ sở dữ liệu. Xóa là một lệnh DML (Data Manipulation Language) và nó loại bỏ một số hoặc tất cả các hàng của một bảng. Mệnh đề 'where' được sử dụng để xác định các hàng được yêu cầu xóa, và nếu mệnh đề where không được sử dụng với lệnh Delete, nó sẽ xóa tất cả dữ liệu trong bảng. Truncate là một tuyên bố DDL (Data Definition Language), và nó loại bỏ toàn bộ dữ liệu từ bảng. Cả hai lệnh này không phá hủy cấu trúc bảng và tham chiếu đến bảng, và chỉ dữ liệu được xóa khi cần thiết.

Xóa tuyên bố

Xóa câu lệnh

Xóa câu lệnh cho phép người dùng xóa dữ liệu khỏi bảng hiện có trong cơ sở dữ liệu dựa trên một điều kiện cụ thể, và 'Mệnh đề where' được sử dụng để xác định điều kiện này. Xóa lệnh được gọi là một thực hiện đăng nhập, bởi vì nó sẽ xóa chỉ một hàng tại một thời điểm, và giữ một mục cho mỗi lần xóa hàng trong nhật ký giao dịch. Vì vậy, điều này gây ra để làm cho hoạt động chậm hơn. Delete là một tuyên bố DML, và do đó nó không phải là tự động cam kết trong khi thực hiện lệnh. Do đó, Thao tác Xoá có thể được lăn lại để truy cập lại dữ liệu, nếu cần. Sau khi thực hiện lệnh Xóa, cần được cam kết hoặc cuộn lại để lưu thay đổi vĩnh viễn. Xóa tuyên bố không loại bỏ các cấu trúc bảng của bảng từ cơ sở dữ liệu. Ngoài ra nó không disallocate không gian bộ nhớ được sử dụng bởi bảng.

Cú pháp tiêu biểu cho lệnh Xóa được nêu dưới đây.

Xóa từ

hoặc

Xóa từ WHERE

Truncate Statement

Truncate tuyên bố loại bỏ tất cả các dữ liệu từ một bảng hiện có trong cơ sở dữ liệu, nhưng nó giữ gìn cấu trúc bảng giống nhau, cũng là các ràng buộc toàn vẹn, quyền truy cập và các mối quan hệ với các bảng khác. Do đó, không cần phải xác định lại bảng, và cấu trúc bảng cũ có thể được sử dụng, nếu người dùng muốn sử dụng lại bảng một lần nữa. Truncate loại bỏ toàn bộ dữ liệu bằng cách deallocating các trang dữ liệu được sử dụng để giữ dữ liệu, và chỉ các deallocations trang được giữ trong nhật ký giao dịch. Do đó, lệnh truncate chỉ sử dụng ít tài nguyên hệ thống và tài nguyên nhật ký giao dịch để hoạt động, vì vậy nó nhanh hơn các lệnh liên quan khác. Truncate là một lệnh DDL, do đó, nó sử dụng cam kết tự động trước và sau khi thực hiện tuyên bố. Do đó, truncate không thể cuộn lại dữ liệu một lần nữa theo bất kỳ cách nào. Nó giải phóng không gian bộ nhớ được sử dụng bởi bảng sau khi thực hiện. Nhưng tuyên bố Truncate không thể được áp dụng trên các bảng được tham chiếu bởi các khó khăn chính nước ngoài.

Sau đây là cú pháp phổ biến cho câu lệnh Truncate.

TRUNCATE TABLE

sự khác nhau giữa Delete và Truncate là gì?

1. Xóa và Truncate lệnh loại bỏ dữ liệu từ các bảng hiện có trong một cơ sở dữ liệu mà không gây tổn hại cho cấu trúc bảng hoặc các tài liệu tham khảo khác vào bảng.

2. Tuy nhiên, lệnh Xoá có thể được sử dụng để xóa các hàng cụ thể chỉ trong một bảng sử dụng một điều kiện thích hợp, hoặc để xóa tất cả các hàng không có điều kiện, trong khi lệnh Truncate chỉ có thể được sử dụng để xóa toàn bộ dữ liệu trong bảng.

3. Xóa là một lệnh DML, và nó có thể quay lại hoạt động nếu cần thiết, nhưng Truncate là một lệnh DDL, do đó, nó là một tuyên bố cam kết tự động và không thể được cuộn lại dưới bất kỳ hình thức nào. Vì vậy, điều quan trọng là sử dụng lệnh này một cách cẩn thận trong quản lý cơ sở dữ liệu.

4. Thao tác cắt ngắn tiêu tốn ít tài nguyên hệ thống và tài nguyên nhật ký giao dịch so với thao tác Xoá, do đó Truncate được coi là nhanh hơn Xóa.

5. Ngoài ra, Xóa không phân bổ không gian được sử dụng bởi bảng, trong khi Truncate giải phóng không gian được sử dụng sau khi thực hiện, do đó Xóa không hiệu quả trong trường hợp xóa toàn bộ dữ liệu từ một bảng cơ sở dữ liệu.

6. Tuy nhiên, Truncate không được phép sử dụng khi bảng được tham chiếu bởi một ràng buộc khóa nước ngoài, và trong trường hợp đó, lệnh Xoá có thể được sử dụng thay vì Truncate.

7. Cuối cùng, cả hai lệnh đều có ưu điểm và bất lợi khi áp dụng chúng vào Hệ thống Quản lý Cơ sở dữ liệu và người sử dụng cần phải biết cách sử dụng các lệnh này một cách hợp lý để đạt được kết quả tốt.