Sự khác biệt giữa Bỏ và Cắt ngắn

Sự khác biệt giữa Bỏ và Cắt ngắn
Sự khác biệt giữa Bỏ và Cắt ngắn

Video: Sự khác biệt giữa Bỏ và Cắt ngắn

Video: Sự khác biệt giữa Bỏ và Cắt ngắn
Video: Bằng cấp và học liên thông | Những điều cần biết | FPT Arena 2024, Tháng bảy
Anonim

Bỏ 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 loại bỏ toàn bộ dữ liệu trong một bảng và câu lệnh SQL 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 không gian lưu trữ hơn Thả và Cắt ngắn.

Trong trường hợp, nếu chúng ta muốn loại bỏ hoàn toàn một bảng trong cơ sở dữ liệu 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 việc này bằng cách sử dụng câu lệnh Drop. Lệnh Drop là một lệnh DDL (Ngôn ngữ Định nghĩa Dữ liệu) và nó có thể được sử dụng để hủy một cơ sở dữ liệu, bảng, chỉ mục hoặc chế độ xem hiện có. Nó xóa toàn bộ thông tin trong bảng, cũng như cấu trúc bảng khỏi cơ sở dữ liệu. Ngoài ra, chúng ta có thể muốn loại bỏ tất cả dữ liệu trong bảng một cách đơn giản, nhưng không có bảng và chúng ta có thể sử dụng câu lệnh Truncate trong SQL trong một trường hợp 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 bảng nhưng vẫn giữ nguyên định nghĩa bảng để sử dụng trong tương lai.

Thả lệnh

Như đã đề cập trước đó, lệnh Drop loại bỏ định nghĩa bảng và tất cả dữ liệu của nó, 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 hợp lệ sau khi thực hiện lệnh. Ngoài ra, nó xóa tất cả thông tin về bảng khỏi từ điển dữ liệu. Sau đây là cú pháp điển hình để sử dụng câu lệnh Drop on a table.

THẢ BẢNG

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ụ về lệnh Drop ở trên.

Điều quan trọng cần lưu ý là không thể sử dụng câu lệnh Drop để xóa một 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, không thể áp dụng câu lệnh Drop 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, thao tác sau khi được kích hoạt sẽ không thể quay lại và 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à do đó, 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 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 định vị lại.

Lệnh cắt ngắn

Lệnh Truncate là một 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, đồng thời 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 của nó vẫn giữ nguyên. Truncate loại bỏ dữ liệu khỏi bảng bằng cách phân bổ các trang dữ liệu được sử dụng để lưu trữ dữ liệu bảng và chỉ các phân bổ trang này được lưu 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ư Delete. Vì vậy, Truncate là câu lệnh nhanh hơn một chút so với những câu lệnh 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.

Truncate 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ó trình 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 là các câu lệnh cam kết tự động nên các giao dịch được thực hiện bằng cách sử dụng các lệnh này không thể quay lại.

Sự khác biệt chính giữa Drop và Truncate là lệnh Drop loại bỏ, không chỉ tất cả dữ liệu trong bảng mà còn xóa vĩnh viễn cấu trúc bảng 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 bảng và nó giữ nguyê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 hợp lệ 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ệ, ràng buộc toàn vẹn và cả các đặc quyền truy cập. Nhưng nếu một bảng bị cắt bớt, cấu trúc bảng và các ràng buộc của nó vẫn để sử dụng trong tương lai và do đó, bất kỳ bản tái tạo nào ở trên không bắt buộc phải 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ố lập kế hoạch cẩn thận trước khi sử dụng chúng để tránh bỏ sót 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 một cách nhanh chóng và dễ dàng, tiêu tốn ít tài nguyên hơn.

Đề xuất: