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_groupsthê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.

SQL ServerĐịnh nghĩa dữ liệu trong SQL Server
Bài Viết Liên Quan:
GUID trong SQL Server
Trung Nguyen 12/03/2022
GUID trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về GUID trong SQL Server và cách sử dụng hàm NEWID() để tạo giá trị GUID.

Kiểu dữ liệu DATETIMEOFFSET trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác datetime với múi giờ.

Kiểu dữ liệu TIME trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu TIME trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách lưu trữ thời gian trong ngày trong cơ sở dữ liệu bằng cách sử dụng kiểu dữ liệu TIME trong SQL Server.

Kiểu dữ liệu DATE trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATE trong SQL Server để lưu trữ dữ liệu ngày tháng trong một bảng.