Sự khác biệt giữa Drop và Truncate

Thả so với cắt ngắn

Drop và Truncate là hai câu lệnh SQL (Ngôn ngữ truy vấn có cấu trúc) được sử dụng trong Hệ thống quản lý cơ sở dữ liệu, nơi chúng tôi muốn xóa các bản ghi dữ liệu khỏi cơ sở dữ liệu. Cả hai câu lệnh Drop và Truncate đều xóa toàn bộ dữ liệu trong một bảng và câu lệnh SQL có liên quan. Thao tác xóa không hiệu quả trong trường hợp này vì nó sử dụng nhiều dung lượng lưu trữ hơn Drop và Truncate.

Trong trường hợp, nếu chúng ta muốn loại bỏ một bảng trong cơ sở dữ liệu hoàn toàn với tất cả dữ liệu của nó, SQL cho phép chúng ta dễ dàng thực hiện điều này bằng cách sử dụng câu lệnh Drop. Lệnh thả là lệnh DDL (Ngôn ngữ định nghĩa dữ liệu) và nó có thể được sử dụng để hủy cơ sở dữ liệu, bảng, chỉ mục hoặc dạng xem hiện có. Nó xóa toàn bộ thông tin trong một bảng, cũng như cấu trúc bảng từ cơ sở dữ liệu. Ngoài ra, chúng tôi có thể muốn loại bỏ tất cả dữ liệu trong một bảng một cách đơn giản, nhưng không có bảng và chúng tôi có thể sử dụng câu lệnh Truncate trong SQL trong kịch bản như vậy. Truncate cũng là một lệnh DDL và nó loại bỏ tất cả các hàng trong một bảng nhưng vẫn giữ nguyên định nghĩa bảng để sử dụng trong tương lai.

Lệnh thả

Như đã đề cập trước đó, lệnh Drop sẽ loại bỏ định nghĩa bảng và tất cả dữ liệu, các ràng buộc toàn vẹn, chỉ mục, trình kích hoạt và đặc quyền truy cập, được tạo trên bảng cụ thể đó. Vì vậy, nó loại bỏ hoàn toàn đối tượng hiện có khỏi cơ sở dữ liệu và các mối quan hệ với các bảng khác cũng sẽ không còn hiệu lực sau khi thực hiện lệnh. Ngoài ra, nó loại bỏ tất cả các thông tin về bảng từ từ điển dữ liệu. Sau đây là cú pháp điển hình để sử dụng câu lệnh Drop trên bảng.

BẢNG DROP

Chúng ta chỉ cần thay thế tên bảng mà chúng ta muốn xóa khỏi cơ sở dữ liệu trong ví dụ trên của lệnh Drop.

Điều quan trọng là chỉ ra rằng câu lệnh Drop không thể được sử dụng để xóa bảng, đã được tham chiếu bởi một ràng buộc khóa ngoài. Trong trường hợp đó, ràng buộc khóa ngoài tham chiếu hoặc bảng cụ thể đó phải được loại bỏ trước tiên. Ngoài ra, câu lệnh Drop không thể được áp dụng trên các bảng hệ thống trong cơ sở dữ liệu.

Vì lệnh Drop là một câu lệnh cam kết tự động, hoạt động một khi được bắn không thể được khôi phục và sẽ không có trình kích hoạt nào được kích hoạt. Khi một bảng bị loại bỏ, tất cả các tham chiếu đến bảng sẽ không hợp lệ và vì vậy, nếu chúng ta muốn sử dụng lại bảng, nó phải được tạo lại với tất cả các ràng buộc toàn vẹn và các đặc quyền truy cập. Tất cả các mối quan hệ với các bảng khác, cũng phải được đặt lại.

Lệnh cắt ngắn

Lệnh Truncate là lệnh DDL và nó loại bỏ tất cả các hàng trong bảng mà không có bất kỳ điều kiện nào do người dùng chỉ định và giải phóng không gian được sử dụng bởi bảng, nhưng cấu trúc bảng với các cột, chỉ mục và ràng buộc vẫn giữ nguyên. Cắt ngắn loại bỏ dữ liệu khỏi một bảng bằng cách sắp xếp lại các trang dữ liệu được sử dụng để lưu trữ dữ liệu của bảng và chỉ các giao dịch trang này được giữ trong nhật ký giao dịch. Vì vậy, nó sử dụng ít tài nguyên nhật ký giao dịch và tài nguyên hệ thống hơn so với các lệnh SQL liên quan khác như Xóa. Vì vậy, Truncate là một tuyên bố nhanh hơn một chút so với những người khác. Sau đây là cú pháp điển hình cho lệnh Truncate.

BẢNG TRUNCATE

Chúng ta nên thay thế tên bảng, từ đó chúng ta muốn xóa toàn bộ dữ liệu, theo cú pháp trên.

Cắt ngắn không thể được sử dụng trên một bảng đã được tham chiếu bởi một ràng buộc khóa ngoại. Nó sử dụng một cam kết tự động trước khi nó hoạt động và một cam kết khác sau đó vì vậy việc khôi phục giao dịch là không thể và không có kích hoạt nào được kích hoạt. Nếu chúng ta muốn sử dụng lại bảng, chúng ta chỉ cần truy cập vào định nghĩa bảng hiện có trong cơ sở dữ liệu.

Sự khác biệt giữa Drop và Truncate là gì?

Cả hai lệnh Drop và Truncate đều là các lệnh DDL và cũng tự động xác nhận các câu lệnh để các giao dịch được thực hiện bằng các lệnh này không thể được khôi phục.

Sự khác biệt chính giữa Drop và Truncate là lệnh Drop sẽ loại bỏ, không chỉ tất cả dữ liệu trong một bảng mà còn xóa cấu trúc bảng vĩnh viễn khỏi cơ sở dữ liệu với tất cả các tham chiếu, trong khi lệnh Truncate chỉ xóa tất cả các hàng trong một bảng và nó bảo tồn cấu trúc bảng và các tham chiếu của nó.

Nếu một bảng bị loại bỏ, các mối quan hệ với các bảng khác sẽ không còn hiệu lực và các ràng buộc toàn vẹn và đặc quyền truy cập cũng sẽ bị xóa. Vì vậy, nếu bảng được yêu cầu sử dụng lại, nó phải được xây dựng lại với các mối quan hệ, các ràng buộc toàn vẹn và các đặc quyền truy cập. Nhưng nếu một bảng bị cắt ngắn, cấu trúc bảng và các ràng buộc của nó vẫn được sử dụng trong tương lai, và do đó, bất kỳ sự tái tạo nào ở trên là không bắt buộc để sử dụng lại.

Khi các lệnh này được áp dụng, chúng ta phải thận trọng khi sử dụng chúng. Ngoài ra, chúng ta nên hiểu rõ hơn về bản chất của các lệnh này, cách chúng hoạt động và cũng có một số kế hoạch cẩn thận trước khi sử dụng chúng để tránh thiếu các yếu tố cần thiết. Cuối cùng, cả hai lệnh này đều có thể được sử dụng để dọn dẹp cơ sở dữ liệu nhanh chóng và dễ dàng, tiêu tốn ít tài nguyên hơn.