04. Lệnh SQL DELETE-TRUNCATE TABLE

Lệnh xóa bảng – SQL DELETE TABLE và SQL TRUNCATE TABLE

Lệnh DROP TABLE và DELETE TABLE đều được dùng để xóa dữ liệu trong bảng nhưng chúng có sự khác biệt rõ ràng ở đây.

Lệnh DROP để xóa toàn bộ bảng, bao gồm cả định nghĩa bảng và dữ liệu trong bảng, trong khi lệnh DELETE được dùng để xóa các hàng trong bảng (có thể là một hoặc nhiều hàng) và không xóa định nghĩa bảng.

Nếu bạn muốn xóa một hàng cụ thể nào đó trong bảng, bạn có thể dùng điều kiện WHERE

Cú pháp như sau:

DELETE FROM table_name [WHERE condition];

Nếu bạn không chỉ rõ điều kiện WHERE thì câu lệnh DELETE TABLE sẽ xóa toàn bộ hàng trong bảng.

DELETE FROM table_name;

Chúng ta đôi khi hay nhầm lẫn giữa lệnh DELETE, DROP và TRUNCATE, chúng ta sẽ đi vào chi tiết vào khác biệt giữa các lệnh.

Sự khác biệt giữa lệnh DELETE và TRUNCATE

Có một sự khác biệt nhỏ giữa lênh DELETE và TRUNCATE. Lệnh DELETE chỉ xóa các hàng trong bảng dựa vào những điều kiện trong phát biểu mệnh đề WHERE, hoặc xóa tất cả các hàng khi lệnh không có mệnh đề điều kiện WHERE.

Nhưng lệnh delete không giải phóng bộ nhớ chứa bảng (tức là nó không làm thay đổi kích thước, cấu trúc của bảng).

Đối với lệnh TRUNCATE, nó được dùng để xóa tất cả các hàng trong bảng và giải phóng bộ nhớ chứa bảng đó (vẫn giữ lại định nghĩa bảng – định nghĩa bảng ở đây được thiể hiện bằng tên cột và kiểu dữ liệu của cột).

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

TRUNCATE TABLE employee;

Hình  ảnh mô tả sự ảnh hưởng của lệnh DELETE và TRUNCATE

Sự khác biệt giữa lệnh DROP và TRUNCATE

Lệnh DROP xóa toàn bộ các hàng trong bảng, nó cũng xóa luôn cả định nghĩa bảng và giải phóng bộ nhớ, do vậy nên tất cả các liên kết, quan hệ của bảng đó với các bảng khác sẽ không còn đúng nữa.

Khi bạn thực hiện lệnh DROP một bảng:

  • Cấu trúc bảng bị xóa bỏ
  • Các quan hệ với bảng bị xóa bỏ
  • Tính toàn vẹn của các ràng buộc cũng bị xóa bỏ
  • Các quyền truy cập cũng bị xóa bỏ

Ta có thể hiểu rằng lệnh DROP xóa bỏ mọi thứ liên quan tới bảng bị DROP

Mặt khác, khi ta TRUNCATE một bảng, cấu trúc của bảng vẫn được giữ nguyên, do vậy bạn sẽ không gặp những vấn đề trên.

Tất nhiên việc sử dụng lệnh nào còn tùy thuộc vào từng bối cảnh, mục đích của bạn. Đôi khi bạn muốn sử dụng dụng lệnh DROP thay vì TRUNCATE, khi đó bạn phải tự quản lý được các liên kết với bảng sẽ được thay đổi như thế nào sau khi bạn DROP bảng, và bạn phải thiết lập lại các mối quan hệ đó.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *