Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa XÓA và TRUNCATE trong SQL

XÓA và TRUNCATE là các lệnh được sử dụng để loại bỏ các bộ dữ liệu khỏi một mối quan hệ, nhưng chúng khác nhau trong nhiều bối cảnh. Trong SQL, lệnh DELETE là lệnh Ngôn ngữ thao tác dữ liệu trong khi đó, lệnh TRUNCATE là lệnh Ngôn ngữ định nghĩa dữ liệu . Tuy nhiên, điểm cho phép chúng ta phân biệt giữa XÓA và TRUNCATE là XÓA có thể xóa các bộ dữ liệu được chỉ định khỏi một mối quan hệ, trong khi đó, lệnh TRUNCATE sẽ xóa toàn bộ bộ dữ liệu khỏi mối quan hệ.

chúng ta không nên dừng lại ở đây, có nhiều sự khác biệt khác giữa XÓA và TRUNCATE. Hãy để chúng tôi thảo luận với họ với sự giúp đỡ của biểu đồ so sánh được hiển thị dưới đây.

Biểu đồ so sánh

Cơ sở cho ComparsionXÓA BỎTRUNCATE
Căn bảnBạn có thể chỉ định bộ dữ liệu mà bạn muốn xóa.Nó xóa tất cả các bộ dữ liệu từ một mối quan hệ.
Ngôn ngữXÓA là một lệnh Ngôn ngữ thao tác dữ liệu.TRUNCATE là một lệnh Ngôn ngữ định nghĩa dữ liệu.
Ở ĐÂULệnh DELETE có thể có mệnh đề WHERE.Lệnh TRUNCATE không có mệnh đề WHERE.
Cò súngLệnh DELETE kích hoạt kích hoạt được áp dụng trên bảng và khiến chúng bắn.Lệnh TRUNCATE không kích hoạt kích hoạt để kích hoạt.
XóaLệnh XÓA loại bỏ từng bộ một.TRUNCATE xóa toàn bộ trang dữ liệu có chứa các bộ dữ liệu.
KhóaLệnh XÓA khóa hàng / tuple trước khi xóa nó.Trang dữ liệu khóa lệnh TRUNCATE trước khi xóa dữ liệu bảng.
Tốc độLệnh DELETE hoạt động chậm hơn so với TRUNCATE.TRUNCATE nhanh hơn so với XÓA.
Giao dịchXÓA hồ sơ giao dịch nhật ký cho mỗi bộ đã xóa.Nhật ký giao dịch bản ghi TRUNCATE cho mỗi trang dữ liệu bị xóa.
Khôi phụcLệnh DELETE có thể được theo sau bởi CAMIT hoặc ROLLBACK.Lệnh TRUNCATE không thể là ROLLBACK.

Định nghĩa của XÓA

XÓA là một lệnh Ngôn ngữ thao tác dữ liệu (DML). Nhiệm vụ của lệnh DELETE là xóa hoặc xóa các bộ dữ liệu khỏi một bảng hoặc một mối quan hệ. Sử dụng DELETE, chúng tôi có thể loại bỏ toàn bộ bộ dữ liệu, với tất cả các giá trị thuộc tính của nó từ một mối quan hệ. XÓA không loại bỏ giá trị của một thuộc tính cụ thể, của một tuple khỏi mối quan hệ.

Bạn có thể lọc các bộ dữ liệu mà bạn muốn xóa khỏi bảng, sử dụng mệnh đề WHERE . Nếu bạn chỉ định mệnh đề WHERE trong câu lệnh XÓA, thì nó sẽ chỉ xóa các bộ dữ liệu thỏa mãn điều kiện mệnh đề WHERE. Nhưng nếu bạn không chỉ định mệnh đề WHERE trong câu lệnh XÓA thì theo mặc định, nó sẽ xóa hoặc loại bỏ tất cả các bộ dữ liệu khỏi một mối quan hệ. Mệnh đề WHERE trong câu lệnh DELETE có thể chứa các câu lệnh CHỌN-TỪ-WHERE lồng nhau.

Cú pháp của lệnh DELETE như sau:

XÓA TỪ tên_bảng WHERE [ conditon ];

Lệnh DELETE chỉ hoạt động trên một mối quan hệ hoặc bảng duy nhất tại một thời điểm. Trong trường hợp bạn muốn xóa tuple khỏi các mối quan hệ khác nhau, bạn phải đặt lệnh XÓA khác nhau cho mỗi mối quan hệ. Nhưng việc xóa bộ dữ liệu khỏi một mối quan hệ có thể vi phạm tính toàn vẹn tham chiếu của cơ sở dữ liệu, có thể được giải quyết với sự trợ giúp của các trình kích hoạt. Nếu lệnh DELETE vi phạm tính toàn vẹn tham chiếu, thì tất cả các kích hoạt tham chiếu (nếu được chỉ định) sẽ được kích hoạt để truyền hành động xóa trên các bộ dữ liệu có quan hệ khác nhau đề cập đến các bộ dữ liệu đã xóa.

Lệnh XÓA trước tiên khóa hàng hoặc tuple sẽ bị xóa và sau đó xóa từng tuple. Do đó, nó đòi hỏi nhiều khóa và tài nguyên hơn làm cho nó chậm hơn . Bạn có thể thực hiện các thay đổi được thực hiện bằng câu lệnh XÓA vĩnh viễn bằng cách sử dụng CAMIT hoặc bạn có thể đặt lại cơ sở dữ liệu bằng ROLLBACK .

Định nghĩa của TRUNCATE

TRUNCATE tương tự như lệnh DELETE vì nó cũng xóa các bộ dữ liệu khỏi một mối quan hệ. Sự khác biệt là nó xóa toàn bộ bộ dữ liệu khỏi một mối quan hệ. Khi lệnh TRUNCATE được thực thi, toàn bộ dữ liệu từ bảng sẽ bị xóa, mỗi bộ dữ liệu cùng với tất cả các giá trị thuộc tính của nó sẽ bị loại khỏi bảng. Nhưng cấu trúc của bảng vẫn tồn tại trong cơ sở dữ liệu. Vì vậy, bạn có thể một lần nữa nhập các bộ dữ liệu trong bảng. TRUNCATE là một lệnh Ngôn ngữ định nghĩa dữ liệu.

Cú pháp của lệnh TRUNCATE như sau:

TRUNCATE BẢNG tên_bảng ;

Giống như XÓA, TRUNCATE không hoạt động trên từng hàng dữ liệu bảng. Thay vào đó, nó hoạt động trên các trang dữ liệu lưu trữ dữ liệu bảng. Bây giờ, khi TRUNCATE xóa các trang dữ liệu, nó phải có được khóa trên các trang dữ liệu thay vì bộ dữ liệu. Do đó, nó dẫn đến yêu cầu về khóa và tài nguyên ít hơn khiến TRUNCATE nhanh hơn so với XÓA.

Việc thực thi lệnh TRUNCATE không kích hoạt bất kỳ trình kích hoạt nào vì nó không vận hành từng hàng dữ liệu. TRUNCATE không thể được thực thi trong trường hợp bảng được tham chiếu bởi bất kỳ khóa ngoại nào. Khi lệnh TRUNCATE xóa dữ liệu bảng, nó không bao giờ có thể được phục hồi .

Sự khác biệt chính giữa XÓA và TRUNCATE trong SQL

  1. Sự khác biệt chính giữa XÓA và TRUNCATE là khi sử dụng XÓA, bạn có thể xóa bộ dữ liệu được chỉ định khỏi một mối quan hệ. Nhưng việc sử dụng TRUNCATE sẽ xóa toàn bộ bộ dữ liệu khỏi một mối quan hệ.
  2. XÓA là lệnh DML trong khi đó, TRUNCATE là lệnh DDL.
  3. XÓA sử dụng mệnh đề WHERE để lọc bản ghi / bộ dữ liệu sẽ bị xóa. Tuy nhiên, TRUNCATE không yêu cầu mệnh đề WHERE vì nó xóa tất cả các bộ dữ liệu, do đó không cần phải lọc các bộ dữ liệu.
  4. XÓA kích hoạt các kích hoạt tham chiếu được áp dụng cho các bảng. Nhưng TRUNCATE không kích hoạt bất kỳ kích hoạt nào trên bàn.
  5. Lệnh DELETE loại bỏ các bộ dữ liệu từng cái một khỏi bảng, theo thứ tự, chúng được xử lý. Tuy nhiên, TRUNCATE không hoạt động trên bộ dữ liệu từng cái một. Thay vào đó, TRUNCATE hoạt động trên trang dữ liệu lưu trữ dữ liệu bảng.
  6. XÓA có được khóa trên bộ dữ liệu trước khi xóa nó trong khi đó, TRUNCATE có được khóa trên trang dữ liệu trước khi xóa trang dữ liệu.
  7. TRUNCATE nhanh hơn so với lệnh DELETE.
  8. XÓA nhật ký giao dịch bản ghi cho mỗi bộ trong khi đó, nhật ký giao dịch bản ghi TRUNCATE cho mỗi trang dữ liệu.
  9. Khi bạn xóa dữ liệu bằng TRUNCATE, nó không bao giờ có thể được phục hồi trong khi đó, bạn có thể khôi phục dữ liệu của mình mà bạn đã xóa bằng lệnh DELETE.

Phần kết luận:

Nếu bạn muốn tùy chỉnh xóa các bản ghi từ bảng thì bạn có thể sử dụng lệnh XÓA. Nếu bạn muốn làm trống bảng tức là bạn không muốn để lại bất kỳ dữ liệu nào trong bảng thì hãy sử dụng lệnh TRUNCATE.

Top