BẢNG TRUNCATE (Transact-SQL)

Bạn đang xem: bảng cắt ngắn máy chủ sql

BẢNG TRUNCATE (Transact-SQL)

Trong bài viết này

Áp dụng cho: SQL Server (tất cả các phiên bản được hỗ trợ) Cơ sở dữ liệu Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Hệ thống phân tích nền tảng (PDW)

Xóa tất cả các hàng khỏi bảng hoặc các phân vùng được chỉ định của bảng mà không ghi nhật ký các lần xóa hàng riêng lẻ. TRUNCATE TABLE tương tự như câu lệnh DELETE không có mệnh đề WHERE; tuy nhiên, TRUNCATE TABLE nhanh hơn và sử dụng ít tài nguyên hệ thống và nhật ký giao dịch hơn.

Quy ước về cú pháp Transact-SQL

Cú pháp

  - Cú pháp cho SQL Server và Azure SQL Database
  
BẢNG TRUNCATE
    {database_name.schema_name.table_name | schema_name.table_name | table_name}
    [WITH (PARTITIONS ({& lt; partition_number_expression & gt; | & lt; range & gt;}
    [ , ...N ] ) ) ]
[; ]
  
& lt; phạm vi & gt; :: =
& lt; phân_lục_số_lượng & gt; ĐẾN & lt; phân vùng_số_thể_thể & gt;
 
  - Cú pháp cho Azure Synapse Analytics và Kho dữ liệu song song
  
BẢNG TRUNCATE {database_name.schema_name.table_name | schema_name.table_name | table_name}
[;]
 

Lưu ý

Để xem cú pháp Transact-SQL cho SQL Server 2014 trở về trước, hãy xem Tài liệu về các phiên bản trước .

Đối số

database_name

Là tên của cơ sở dữ liệu.

schema_name

Là tên của lược đồ chứa bảng.

table_name

Là tên của bảng cần cắt bớt hoặc từ đó tất cả các hàng bị xóa. table_name phải là một ký tự. table_name không được là hàm OBJECT_ID () hoặc một biến.

WITH (PARTITIONS ({& lt; partition_number_expression & gt; | & lt; range & gt;} [, … n]))

Áp dụng cho : SQL Server (SQL Server 2016 (13.x) đến phiên bản hiện tại )

Chỉ định các phân vùng để cắt bớt hoặc từ đó tất cả các hàng bị loại bỏ. Nếu bảng không được phân vùng, đối số WITH PARTITIONS sẽ tạo ra lỗi. Nếu mệnh đề WITH PARTITIONS không được cung cấp, toàn bộ bảng sẽ bị cắt bớt.

& lt; phân_lục_số_lượng & gt; có thể được chỉ định theo những cách sau:

  • Cung cấp số lượng của một phân vùng, ví dụ: WITH (PARTITIONS (2))

  • Cung cấp số phân vùng cho một số phân vùng riêng lẻ được phân tách bằng dấu phẩy, ví dụ: WITH (PARTITIONS (1, 5))

  • Cung cấp cả phạm vi và phân vùng riêng lẻ, ví dụ: WITH (PARTITIONS (2, 4, 6 TO 8))

  • & lt; phạm vi & gt; có thể được chỉ định dưới dạng số phân vùng được phân tách bằng từ TO , ví dụ: WITH (PARTITIONS (6 ĐẾN 8))

Để cắt bớt một bảng được phân vùng, bảng và các chỉ mục phải được căn chỉnh (được phân vùng trên cùng một chức năng phân vùng).

Nhận xét

So với câu lệnh DELETE, TRUNCATE TABLE có những ưu điểm sau:

  • Sử dụng ít không gian nhật ký giao dịch hơn.

    Câu lệnh DELETE xóa từng hàng một và ghi lại một mục nhập trong nhật ký giao dịch cho mỗi hàng đã xóa. 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ỉ ghi lại các phân bổ trang trong nhật ký giao dịch.

  • Thường sử dụng ít ổ khóa hơn.

    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. TRUNCATE TABLE luôn khóa bảng (bao gồm khóa giản đồ (SCH-M)) và trang nhưng không khóa từng hàng.

  • Không có ngoại lệ, không có trang nào được để lại trong bảng.

    Sau khi câu lệnh DELETE được thực thi, bảng vẫn có thể chứa các trang trống. Ví dụ: không thể phân bổ các trang trống trong heap mà không có ít nhất một khóa bảng (LCK_M_X) độc quyền. Nếu thao tác xóa không sử dụng khóa bảng, bảng (heap) sẽ chứa nhiều trang trống. Đối với các chỉ mục, thao tác xóa có thể để lại các trang trống, mặc dù các trang này sẽ được xử lý nhanh chóng bằng quy trình dọn dẹp nền.

Xem Thêm  HTML và Mẫu & Chữ viết mẫu JavaScript - mẫu javascript html theo nghĩa đen

TRUNCATE TABLE xóa tất cả các hàng khỏi bảng, nhưng cấu trúc bảng và các cột, ràng buộc, chỉ mục, v.v. của nó vẫn còn. Để xóa định nghĩa bảng ngoài dữ liệu của nó, hãy sử dụng câu lệnh DROP TABLE .

Nếu bảng chứa cột nhận dạng, bộ đếm cho cột đó được đặt lại thành giá trị gốc được xác định cho cột. Nếu không có hạt giống nào được xác định, giá trị mặc định 1 được sử dụng. Để giữ lại bộ đếm danh tính, hãy sử dụng DELETE thay thế.

Lưu ý

Thao tác TRUNCATE TABLE có thể được khôi phục.

Hạn chế

Bạn không thể sử dụng TRUNCATE TABLE trên các bảng:

  • Được tham chiếu bởi một ràng buộc NGOẠI KHÓA. Bạn có thể cắt bớt một bảng có khóa ngoại tự tham chiếu.

  • Tham gia vào chế độ xem được lập chỉ mục.

  • Được xuất bản bằng cách sử dụng sao chép giao dịch hoặc sao chép hợp nhất.

  • Có phiên bản hệ thống tạm thời.

  • Được tham chiếu bởi một ràng buộc EDGE.

Đối với các bảng có một hoặc nhiều đặc điểm này, hãy sử dụng câu lệnh DELETE để thay thế.

BẢNG TRUNCATE không thể kích hoạt trình kích hoạt vì thao tác này không ghi nhật ký các lần xóa hàng riêng lẻ. Để biết thêm thông tin, hãy xem TẠO TRIGGER (Giao dịch-SQL) .

Trong Phân tích Azure Synapse và Hệ thống Nền tảng Analytics (PDW):

  • BẢNG TRUNCATE không được phép trong câu lệnh EXPLAIN.

  • BẢNG TRUNCATE không thể chạy trong giao dịch.

Xem Thêm  Đặt CSS div Vị trí tuyệt đối, tương đối, cố định & thả nổi - css định vị một div

Cắt bớt các bảng lớn

Microsoft SQL Server có khả năng loại bỏ hoặc cắt bớt các bảng có hơn 128 phạm vi mà không cần giữ khóa đồng thời trên tất cả các phạm vi cần thiết để loại bỏ.

Quyền

Quyền tối thiểu được yêu cầu là ALTER trên table_name. Các quyền TRUNCATE TABLE được mặc định cho chủ sở hữu bảng, thành viên của vai trò máy chủ cố định sysadmin db_owner db_ddladmin vai trò cơ sở dữ liệu cố định và không thể chuyển nhượng. Tuy nhiên, bạn có thể kết hợp câu lệnh TRUNCATE TABLE trong một mô-đun, chẳng hạn như một thủ tục được lưu trữ và cấp quyền thích hợp cho mô-đun bằng mệnh đề EXECUTE AS .

Ví dụ

A. Cắt bớt một bảng

Ví dụ sau đây xóa tất cả dữ liệu khỏi bảng JobCandidate . Các câu lệnh SELECT được đưa vào trước và sau câu lệnh TRUNCATE TABLE để so sánh kết quả.

  SỬ DỤNG AdventureWorks2012;
ĐI
CHỌN ĐẾM (*) AS BeforeTruncateCount
TỪ HumanResources.JobCandidate;
ĐI
BẢNG TRUNCATE HumanResources.JobCandidate;
ĐI
CHỌN COUNT (*) AS AfterTruncateCount
TỪ HumanResources.JobCandidate;
ĐI
 

B. Cắt ngắn các phân vùng trong bảng

Áp dụng cho : SQL Server (SQL Server 2016 (13.x) đến phiên bản hiện tại )

Ví dụ sau cắt bớt các phân vùng được chỉ định của một bảng được phân vùng. Cú pháp WITH (PARTITIONS (2, 4, 6 TO 8)) khiến số phân vùng 2, 4, 6, 7 và 8 bị cắt bớt.

  BẢNG TRUNCATE PartitionTable1
VỚI (CÁC PHẦN (2, 4, 6 ĐẾN 8));
ĐI
 

Xem thêm

XÓA (Giao dịch-SQL)
DROP TABLE (Transact-SQL)
IDENTITY (Thuộc tính) (Giao dịch-SQL)


Xem thêm những thông tin liên quan đến chủ đề bảng cắt ngắn máy chủ sql

Học SQL | Hướng dẫn cách cài đặt SQL Server 2019 trên Windows 11

  • Tác giả: Ngọc Chiến MasterMOS
  • Ngày đăng: 2022-06-22
  • Đánh giá: 4 ⭐ ( 6394 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: SQL là một phần bổ trợ cực kỳ tuyệt vời cho các bạn để xử lý, phân tích dữ liệu lớn từ một triệu dòng lên đến hàng trăm triệu dòng dữ liệu. Nếu bạn biết cả Excel và SQL, cơ hội công việc của bạn sẽ mở ra rất lớn.

    Trong Video hướng dẫn này, các bạn hãy cùng tôi tìm hiểu về cách thức cài đặt phần mềm SQL Server 2019 trên phiên bản Windows 11 để học SQL xử lý, phân tích dữ liệu lớn. Khi chúng ta hoàn thành cài đặt SQL Server lên máy tính của mình, chúng ta mới có môi trường để có thể học và làm các công việc khác với SQL.

    Phiên bản sử dụng trong hướng dẫn này là phiên bản 2019 Developer, một phiên bản hoàn toàn miễn phí của hãng Microsoft để hỗ trợ các nhà phát triển ứng dụng SQL trong công việc của mình. Bạn có thể sử dụng phiên bản này để dành cho việc học tập, ứng dụng SQL vào xử lý, phân tích dữ liệu lớn cực kỳ hiệu quả các bạn nhé 🙂

    Tác giả: Ngọc Chiến MasterMOS
    Website: https://ptdl.vn
    Fanpage: https://fb.com/mastermosvn
    Group: https://fb.com/groups/mastermosvn

    SQL SQLServer PhanTichDuLieuVoiSQL MasterMOS NgocChienMasterMOS

MySQL hoàn tác bảng cắt ngắn

  • Tác giả: vi.smnggeophysics.com
  • Đánh giá: 5 ⭐ ( 4085 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Một trong các bảng MySQL của tôi đã vô tình bị cắt bớt và tôi muốn hoàn tác nó để dữ liệu được trả lại. Có nhật ký ở bất kỳ nơi nào tôi có thể xem dữ liệu bị cắt bớt hoặc có thể lấy lại dữ liệu không? Tôi đã …

máy chủ sql Cắt ngắn các phân vùng của bảng theo tên phân vùng

  • Tác giả: vie.safehavenpetrescue.org
  • Đánh giá: 4 ⭐ ( 7329 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tôi đã tạo một bảng được phân vùng trong máy chủ SQL như sau: –Thêm nhóm tệp thay thế Kiểm tra cơ sở dữ liệu Thêm nhóm tệp [Part_20181201] Đi kiểm tra cơ sở dữ liệu thay thế Thêm nhóm tệp [Part_20181202] Đi – tạo tệp …

SQL Tạo bảng từ R – Dữ liệu chuỗi, cắt ngắn bên phải

  • Tác giả: isolution.pro
  • Đánh giá: 5 ⭐ ( 3770 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Cách để Tạo cơ sở dữ liệu máy chủ SQL

  • Tác giả: www.wikihow.vn
  • Đánh giá: 3 ⭐ ( 9668 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Cách để Tạo cơ sở dữ liệu máy chủ SQL. Cơ sở dữ liệu máy chủ SQL là một trong những cơ sở dữ liệu phổ biến nhất hiện nay, một phần là bởi cơ sở dữ liệu này rất dễ khởi tạo và duy trì. Với chương trình giao diện đồ họa người dùng (GUI) như…

Cắt ngắn tệp nhật ký giao dịch SQL Server

  • Tác giả: vi.visionaryschoolof-arts.org
  • Đánh giá: 5 ⭐ ( 8958 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong ổ C: cục bộ của tôi, tôi có một tệp ldf cho cơ sở dữ liệu được lưu trữ trên một trong các máy chủ của chúng tôi. Tôi có một bản sao cục bộ của một trong các cơ sở dữ liệu là 1 gb và ldf (tệp nhật ký) của cơ sở dữ liệu đó là 16 …

Cách cắt ngắn chuỗi bằng máy chủ SQL

  • Tác giả: qastack.vn
  • Đánh giá: 5 ⭐ ( 1412 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Nếu bạn chỉ muốn trả về một vài ký tự trong chuỗi dài của mình, bạn…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Sql Chọn ví dụ mệnh đề ở đâu - chọn câu lệnh trong mệnh đề where

By ads_php