TRUNCATE TABLE trong SQL Server
Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh TRUNCATE TABLE
trong SQL Server để xóa tất cả các hàng khỏi bảng nhanh hơn và hiệu quả hơn.
Giới thiệu về câu lệnh TRUNCATE TABLE trong SQL Server
Đôi khi, bạn muốn xóa tất cả các hàng khỏi bảng. Trong trường hợp này, bạn thường sử dụng câu lệnh DELETE
không có mệnh đề WHERE
.
Ví dụ sau tạo một bảng mới có tên customer_groups
và thêm một số hàng vào bảng:
CREATE TABLE sales.customer_groups (
group_id INT PRIMARY KEY IDENTITY,
group_name VARCHAR (50) NOT NULL
);
INSERT INTO sales.customer_groups (group_name)
VALUES
('Intercompany'),
('Third Party'),
('One time');
Để xóa tất cả các hàng khỏi bảng customer_groups
, bạn sử dụng câu lệnh DELETE
như sau:
DELETE FROM sales.customer_groups;
Bên cạnh câu lệnh DELETE FROM
, bạn có thể sử dụng câu lệnh TRUNCATE TABLE
để xóa tất cả các hàng khỏi bảng.
Sau đây minh họa cú pháp của câu lệnh TRUNCATE TABLE
:
TRUNCATE TABLE [database_name.][schema_name.]table_name;
Trong cú pháp này, trước tiên, bạn chỉ định tên của bảng mà bạn muốn xóa tất cả các hàng. Thứ hai, tên cơ sở dữ liệu là tên của cơ sở dữ liệu mà bảng được tạo. Tên cơ sở dữ liệu là tùy chọn. Nếu bạn bỏ qua nó, câu lệnh sẽ xóa bảng trong cơ sở dữ liệu hiện được kết nối.
Các câu lệnh sau trước tiên thêm một số hàng vào bảng customer_groups
và sau đó xóa tất cả các hàng khỏi bảng bằng cách sử dụng câu lệnh TRUNCATE TABLE
:
INSERT INTO sales.customer_groups (group_name)
VALUES
('Intercompany'),
('Third Party'),
('One time');
TRUNCATE TABLE sales.customer_groups;
Câu lệnh TRUNCATE TABLE
tương tự như câu lệnh DELETE
không có mệnh đề WHERE
. Tuy nhiên, câu lệnh TRUNCATE
thực thi nhanh hơn và sử dụng ít tài nguyên hệ thống và nhật ký giao dịch hơn.
TRUNCATE TABLE so với DELETE
Câu lệnh TRUNCATE TABLE
có những ưu điểm sau so với câu lệnh DELETE
:
Sử dụng ít nhật ký giao dịch hơn
Câu lệnh DELETE
xóa từng hàng một và thêm một mục vào nhật ký giao dịch cho mỗi hàng đã xóa.
Trong khi đó, câu lệnh TRUNCATE TABLE
xóa dữ liệu 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ỉ thêm các phân bổ trang trong nhật ký giao dịch.
Sử dụng ít khóa hơn
Trong khi câu lệnh DELETE
được thực thi bằng cách sử dụng khóa hàng, mỗi hàng trong bảng sẽ bị khóa để xóa. Câu lệnh TRUNCATE TABLE
khóa bảng và các trang, không phải mỗi hàng.
Thiết lập lại giá trị cột định danh
Nếu bảng được xóa có một cột định danh, thì bộ đếm cho cột đó được đặt lại về giá trị gốc khi dữ liệu bị xóa bởi câu lệnh TRUNCATE TABLE
còn câu lệnh DELETE
thì không.
Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh TRUNCATE TABLE
trong SQL Server để xóa tất cả các hàng khỏi bảng nhanh hơn và hiệu quả hơn.