TRUNCATE TABLE trong SQL Server

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.

Để 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 *