Computer >> Máy Tính >  >> Lập trình >> SQL Server

Lệnh TRUNCATE TABLE trong SQL Server

Câu lệnh TRUNCATE TABLE được sử dụng để xóa tất cả các bản ghi khỏi một bảng trong SQL Server. Lệnh này hoạt động tương tự như lệnh DELETE nhưng không có mệnh đề WHERE.

Cú pháp của lệnh TRUNCATE TABLE trong SQL Server

  TRUNCATE TABLE [ten _CSDL.] [ten_schema.] ten_bang 
[ WITH (PARTITIONS (so_phanvung
| so _phanvung TO so _p | so _phanvung TO so _p hanvung)];

Tên biến hoặc giá trị biến

ten_CSDL

Tùy bạn. Nếu được chỉ định, đây là tên của cơ sở dữ liệu.

ten_scheme

Tùy chọn. Đây là tên của lược đồ (tạm dịch là giản đồ hoặc không gian tên) mà bảng thuộc về.

ten_bang

Bảng bạn muốn xóa bản ghi.

VỚI (CÁC PHẦN (so_phanvung | so _phanvung TO so _phanvung)

Tùy chọn và chỉ có thể được sử dụng với bảng phân vùng. Nếu được chỉ định, so_phanvung là số vùng bạn muốn xóa trong bảng này. Để xóa nhiều vùng, hãy sử dụng dấu phẩy để phân tách các giá trị hoặc phạm vi giá trị phân vùng số. Nếu bạn sử dụng mệnh đề này với một bảng không được phân vùng, SQL Server sẽ báo lỗi. Tính năng này không có sẵn trong tất cả các phiên bản của SQL Server.

Lưu ý

  1. Nếu bạn xóa tất cả các bản ghi trong bảng, bộ đếm ở mỗi cột thụt lề sẽ được lặp lại từ đầu.
  2. Không thể xóa tất cả các bản ghi trong bảng được tham chiếu bởi Khóa ngoại.
  3. Trước khi xóa toàn bộ bản ghi trong bảng, bản ghi đó phải có mức ưu tiên là BẢNG BIỂU DIỄN.

Ví dụ:

Trong SQL Server, xóa toàn bộ bản ghi là cách nhanh nhất nếu bạn không phải truy xuất dữ liệu. Nếu bảng là TRUNCATE, việc xóa các hàng sẽ không được ghi lại do đó không thể quay lại thao tác trước đó. TRUNCATE cũng dễ dàng hơn xóa bảng bằng lệnh DROP hoặc tạo bảng mới bằng CREATE. Xem ví dụ bên dưới.

  TRUNCATE TABLE; 

Ví dụ này sẽ xóa tất cả các bản ghi trong bảng.

Lệnh trên tương đương với lệnh DELETE bên dưới.

  DELETE FROM nhanvien; 

Cả hai lệnh này đều xóa tất cả dữ liệu trong bảng. Sự khác biệt là với lệnh DELETE, bạn có thể quay lại thao tác trước khi xóa nếu bạn muốn ở lại với TRUNCATE.

Hãy xem một ví dụ khác với tên của cơ sở dữ liệu.

  TRUNCATE TABLE totn.danhba; 

Ví dụ này xóa tất cả các mục nhập danh sách trong cơ sở dữ liệu có tên totn.

Ví dụ:với phân vùng

Nếu bạn muốn xóa bản ghi 1 hoặc 1 vùng, hãy sử dụng lệnh TRUNCATE TABLE với mệnh đề WITH PARTITIONS.

BẢNG TRUNCATE nhanvien
VỚI (CÁC PHẦN (1 ĐẾN 5, 7));

Trong ví dụ này, bảng là một bảng phân vùng và câu lệnh TRUNCATE TABLE sẽ xóa các bản ghi vùng từ 1 đến 5 và vùng 7 trên bảng này.

Câu hỏi thường gặp

Hỏi: Tôi có thể sao lưu cơ sở dữ liệu về trạng thái cũ (khôi phục) sau khi thực hiện lệnh TRUNCATE TABLE trong SQL Server không?

Trả lời:The Lệnh TRUNCATE TABLE có thể được khôi phục bằng giao dịch. Ví dụ như bên dưới.

  CREATE T ABLE bang_test (cot1 int); 


INSERT INTO bang_test VALUES (1);
INSERT INTO bang_test VALUES (2);

INSERT INTO bang_test VALUES (3);


-- Tạo chuyển tiếp
BEGIN TRAN;


-- Xóa bản ghi trong bảng
TRUNCATE TABLE dbo.bảng_test;


-- Rollback bảng đã xóa bản ghi
ROLLBACK;


SELECT * FROM bang_ test;

Câu lệnh SELECT ở trên sẽ trả về kết quả của các bản ghi bên dưới.

 cot1 
----------
1
2
3

Như vậy, trạng thái cơ sở dữ liệu đã được khôi phục về trạng thái cũ và 3 bản ghi vẫn còn trên state_test.