Chuyển tới nội dung
Home » Truncate Table Là Gì | Lệnh Truncate Table Trong Oracle

Truncate Table Là Gì | Lệnh Truncate Table Trong Oracle

SQL SERVER CƠ BẢN | HƯỚNG DẪN SỬ DỤNG ALTER TABLE, TRUNCATE TABLE, DROP TABLE TRONG SQL SERVER

Ví dụ về TRUNCATE TABLE trong SQL

Giả sử bảng NHANVIEN có các bản ghi như sau:

+—-+———-+—–+———–+———-+ | ID | TEN |TUOI | DIACHI | LUONG | +—-+———-+—–+———–+———-+ | 1 | Thanh | 32 | Haiphong | 2000.00 | | 2 | Loan | 25 | Hanoi | 1500.00 | | 3 | Nga | 23 | Hanam | 2000.00 | | 4 | Manh | 25 | Hue | 6500.00 | | 5 | Huy | 27 | Hatinh | 8500.00 | | 6 | Cao | 22 | HCM | 4500.00 | | 7 | Lam | 24 | Hanoi | 10000.00 | +—-+———-+—–+———–+———-+

Thực hiện câu lệnh Truncate như sau:


SQL > TRUNCATE TABLE NHANVIEN;

Bây giờ, bảng NHANVIEN đã bị loại bỏ các bản ghi và kết quả từ câu lệnh SELECT được trả về là:


SQL> SELECT * FROM NHANVIEN;


Empty set (0.00 sec)

Trong phần tiếp theo, chúng ta sẽ tìm hiểu về cách sử dụng VIEW trong SQL, các bạn nhớ theo dõi nhé.

Bài trước: Chỉ mục (INDEX) trong SQL

13.703

0 Bình luận

Sắp xếp theo

Ưu và nhược điểm TRUNCATE trong SQL

Lệnh TRUNCATE trong SQL có ưu điểm và nhược điểm riêng. Dưới đây là một cái nhìn tổng quan về chúng:

Ưu điểm của TRUNCATE trong SQL:

  1. Hiệu suất cao: TRUNCATE thường nhanh hơn so với lệnh DELETE. Khi sử dụng TRUNCATE, hệ quản trị cơ sở dữ liệu chỉ cần xóa và giải phóng không gian của các trang dữ liệu mà không cần ghi lại từng dòng dữ liệu như DELETE. Điều này làm cho quá trình xóa dữ liệu trở nên nhanh chóng và tiết kiệm tài nguyên hệ thống.
  2. Giải phóng không gian lưu trữ: Khi sử dụng TRUNCATE, không gian lưu trữ được giải phóng hoàn toàn. Các trang dữ liệu bị xóa sẽ được giải phóng và sẵn sàng để được sử dụng lại, giúp giảm thiểu sự lãng phí không gian lưu trữ.
  3. Reset các giá trị tự tăng (Auto Increment): Khi sử dụng TRUNCATE, các trường tự tăng (auto increment) trong bảng sẽ được đặt lại về giá trị ban đầu. Điều này có lợi khi bạn muốn bắt đầu lại chuỗi số tự động cho các bản ghi tiếp theo.
  4. Không ghi log dữ liệu: TRUNCATE không ghi log cho từng dòng dữ liệu bị xóa, do đó không tạo ra log lớn như khi sử dụng DELETE. Điều này giúp giảm tải hệ thống và dung lượng bộ nhớ được sử dụng.

Nhược điểm của TRUNCATE trong SQL:

  1. Không thể hoàn tác dữ liệu: Một trong nhược điểm lớn nhất của TRUNCATE là không thể khôi phục lại dữ liệu sau khi nó đã bị xóa. Nếu bạn xóa dữ liệu một cách không cẩn thận, bạn sẽ mất nó vĩnh viễn. Điều này là một rủi ro lớn và yêu cầu sự thận trọng.
  2. Không hỗ trợ điều kiện WHERE: TRUNCATE không hỗ trợ điều kiện WHERE để xóa chỉ một phần dữ liệu trong bảng. Nó luôn xóa toàn bộ bảng. Nếu bạn chỉ muốn xóa một số dòng dữ liệu cụ thể, bạn phải sử dụng DELETE với điều kiện WHERE.
  3. Ảnh hưởng đến các ràng buộc khóa ngoại: TRUNCATE có thể ảnh hưởng đến các bảng có ràng buộc khóa ngoại. Khi bạn xóa dữ liệu từ một bảng cha có khóa ngoại, các hàng tương ứng trong các bảng con cũng có thể bị xóa hoặc cản trở.
  4. Quyền truy cập và phân quyền: Khi sử dụng TRUNCATE, người dùng cần có quyền TRUNCATE TABLE trên bảng đó. Điều này đòi hỏi việc quản lý quyền truy cập và phân quyền một cách cẩn thận.

Tóm lại, TRUNCATE là một lựa chọn hữu ích cho việc xóa toàn bộ dữ liệu từ bảng một cách hiệu quả về hiệu suất, nhưng bạn cần phải cân nhắc kỹ về nhược điểm của nó, đặc biệt là khả năng không thể khôi phục lại dữ liệu đã xóa.

SQL SERVER CƠ BẢN | HƯỚNG DẪN SỬ DỤNG ALTER TABLE, TRUNCATE TABLE, DROP TABLE TRONG SQL SERVER
SQL SERVER CƠ BẢN | HƯỚNG DẪN SỬ DỤNG ALTER TABLE, TRUNCATE TABLE, DROP TABLE TRONG SQL SERVER

Ví dụ

Giả sử bảng CUSTOMERS có các bản ghi sau đây:

+—-+———-+—–+———–+———-+ | ID | NAME | AGE | ADDRESS | SALARY | +—-+———-+—–+———–+———-+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +—-+———-+—–+———–+———-+

Sau đây là ví dụ về lệnh Truncate.

TRUNCATE TABLE CUSTOMERS;

Bây giờ, bảng CUSTOMERS được cắt ngắn và kết quả từ câu lệnh SELECT sẽ được hiển thị trong khối mã bên dưới:

SELECT * FROM CUSTOMERS; Empty set (0.00 sec)

TRUNCATE TABLE – Lệnh xóa dữ liệu

Nội dung

Lợi ích của việc sử dụng TRUNCATE TABLE trong SQL

  • Mãi mãi một dòng dữ liệu: TRUNCATE TABLE thường nhanh hơn so với câu lệnh DELETE TABLE. Khi sử dụng TRUNCATE TABLE, hệ quản trị cơ sở dữ liệu chỉ cần xóa và giải phóng không gian của các trang dữ liệu mà không cần ghi lại từng dòng dữ liệu như DELETE TABLE. Điều này làm cho quá trình xóa dữ liệu trở nên nhanh chóng và tiết kiệm tài nguyên hệ thống.
  • Giải phóng không gian lưu trữ: Khi sử dụng TRUNCATE TABLE, không gian lưu trữ được giải phóng hoàn toàn. Các trang dữ liệu bị xóa sẽ được giải phóng và sẵn sàng để được sử dụng lại, giúp giảm thiểu sự lãng phí không gian lưu trữ.
  • Reset các giá trị tự tăng (Auto Increment): Khi sử dụng TRUNCATE TABLE, các trường tự tăng (auto increment) trong bảng sẽ được đặt lại về giá trị ban đầu. Điều này có lợi khi bạn muốn bắt đầu lại chuỗi số tự động cho các bản ghi tiếp theo.
  • Không ghi log dữ liệu: TRUNCATE TABLE không ghi log cho từng dòng dữ liệu bị xóa, do đó không tạo ra log lớn như khi sử dụng DELETE TABLE. Điều này giúp giảm tải hệ thống và dung lượng bộ nhớ được sử dụng.

Tuy nhiên, cũng cần lưu ý rằng việc sử dụng TRUNCATE TABLE có một số hạn chế. TRUNCATE TABLE không hỗ trợ điều kiện WHERE để xóa một phần dữ liệu, và dữ liệu bị xóa không thể khôi phục lại. Do đó, trước khi sử dụng TRUNCATE TABLE, hãy đảm bảo rằng bạn đã sao lưu dữ liệu quan trọng và xác định rõ ràng về tác động của việc xóa toàn bộ dữ liệu trong bảng.

Học SQL 06. Cách xóa bảng câu lệnh DROP TABLE và xóa dữ liệu bảng bằng câu lệnh TRUNCATE TABLE
Học SQL 06. Cách xóa bảng câu lệnh DROP TABLE và xóa dữ liệu bảng bằng câu lệnh TRUNCATE TABLE

Tìm hiểu Truncate trong Oracle

Khác với lệnh delete, khi bạn sử dụng lệnh truncate thì bạn không thể rollback, nghĩa là đã xóa là ra đi không có đường trở lại.

Lệnh truncate không ảnh hưởng tới các thiết lập khác của bảng như khóa chính, trigger.

Bài viết này được đăng tại [free tuts .net]

Cú pháp như sau:

TRUNCATE TABLE table_name

Trong đó table_name là tên bảng mà bạn muốn xóa.

Ví dụ: Xóa tất cả dữ liệu của bảng customers.

TRUNCATE TABLE customers;

Chạy lệnh này xong bạn hãy kiểm tra dữ liệu của table nhé, bạn sẽ thấy nó đã mất sạch không còn một record nào cả.

Cú pháp lệnh TRUNCATE TABLE

Cú pháp cơ bản của lệnh TRUNCATE TABLE:

TRUNCATE TABLE table_name;

Khi đó table_name là tên của bạn muốn xóa dữ liệu.

Ngoài ra bạn cũng có thể áp dụng lệnh ở cú pháp nâng cao hơn như sau:

TRUNCATE TABLE [ten_CSDL.] [ten_schema.] ten_bang

[ WITH (PARTITIONS (so_phanvung

| so _phanvung TO so _phanvung ) ] ;

Ở phần 2 tôi sẽ phân tích kỹ hơn các giá trị cũng như là tên biến của cú pháp nâng cao này hơn.

How to Truncate Table in SQL
How to Truncate Table in SQL

Ví dụ

TRUNCATE TABLE JOB_HISTORY

Xem thêm: lệnh thêm dữ liệu INSERT, lệnh sửa dữ liệu UPDATE, lệnh xóa dữ liệu DELETE, lệnh trộn dữ liệu MERGE.

Trong bài này ta sẽ tìm hiểu một lệnh có chức năng tương tự như lệnh delete đó là lệnh truncate. Lệnh Truncate sẽ xóa toàn bộ các records có trong bảng, điều này đồng nghĩa với bạn sử dụng lệnh delete không nhập điều kiện xóa.

Câu hỏi đặt ra là tại sao ta không sử dụng lệnh Delete mà lại sử dụng Truncate? Để trả lời thì bạn xem các phần tiếp theo nhé.

Mục lục

  • Tìm hiểu Truncate trong Oracle
  • Lời kết

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

ten_CSDL

Tùy bạn chọn như thế nào. Đây là tên của CSDL được bạn đặt

Ten_schema

Tương tự như ten_CSDL đây là tên của SCHEMA. Tôi cũng đã viết một bài viết chi tiết về SCHEMA trong SQL Server bạn có thể tìm và tham khảo qua (Internal link nè)

ten_bang

Đây là tên bảng mà bạn sẽ chọn để xóa các dữ liệu

WITH (PARTITIONS (so_phanvung | so_phanvung TO so_phanvung)

Cũng tương tự như 2 biến trên. Bạn có thể dùng với bảng phân vùng và sử dụng thêm so_phanvung để xác định số vùng mà mình muốn xóa trong bảng đó.

Nếu muốn xóa nhiều vùng, hãy dùng dấu (,) để tách các giá trị khoảng giá trị.Tuy nhiên lệnh sẽ lỗi khi bạn sử dụng đối với những bảng không được phân vùng. Tùy các phiên bản SQL khác nhau sẽ có hoặc không có tình năng này.

Lưu ý:

  • Không xóa được toàn bộ dữ liệu trong bảng được tham chiếu bằng Foreign Key.
  • Trước khi xóa toàn bộ dữ liệu,bạn phải có quyền ưu tiên như ALTER TABLE
  • Bộ đếm ở toàn bộ cột tự tăng giá trị sẽ quay lại từ đầu nếu bạn xóa toàn bộ dữ liệu trong bảng.

Ví Dụ:

Ví dụ 1

Trong SQL Server nếu như bạn không muốn lấy lại các dữ liệu thì xóa toàn bộ bảng là cách nhanh nhất. Sẽ có 2 lệnh xóa là DELETE và TRUNCATE, khác ở chỗ là với DELETE bạn có thể hoàn tác còn TRUNCATE sẽ “một đi không trở lại”.

Với TRUNCATE cũng đơn giản hơn khi xóa bằng lệnh DROP hay tạo bằng CREATE.

Ví dụ tôi muốn xóa bảng “hangtonkho” tôi có thể làm như sau

DELETE FROM hangtonkho;

Hoặc

TRUNCATE TABLE hangtonkho;

Ngoài ra cũng có thể xóa dữ liệu có điều kiện như sau

TRUNCATE TABLE totn.hangtonkho;

Với lệnh này tôi sẽ xóa các dữ liệu có tên totn trong bảng hangtonkho

Ví dụ 2 phân vùng

Áp dụng cú pháp cho bảng có phân vùng, ta sử dụng thêm mệnh đề WITH PARTITIONS cùng lệnh TRUNCATE TABLE

TRUNCATE TABLE hangtonkho

WITH (PARTITIONS (1 TO 5, 7) );

Ở hàm này tôi sẽ xóa các dữ liệu từ vùng 1-5 và vùng 7 trong bảng hangtonkho

Oracle - SQL - Truncate Table
Oracle – SQL – Truncate Table

Lưu ý khi sử dụng TRUNCATE table trong SQL

Khi sử dụng TRUNCATE TABLE trong SQL, có một số lưu ý quan trọng cần xem xét:

  • Không thể khôi phục dữ liệu: Khi sử dụng TRUNCATE TABLE, toàn bộ dữ liệu trong bảng sẽ bị xóa mà không thể khôi phục lại. Hãy đảm bảo rằng bạn đã sao lưu dữ liệu quan trọng trước khi thực hiện thao tác TRUNCATE.
  • Không hỗ trợ điều kiện WHERE: TRUNCATE TABLE không hỗ trợ điều kiện WHERE để xóa chỉ một phần dữ liệu trong bảng. Nếu bạn chỉ muốn xóa một số dòng dữ liệu cụ thể, hãy sử dụng câu lệnh DELETE TABLE với điều kiện WHERE thích hợp.
  • Quyền truy cập và phân quyền: Khi sử dụng TRUNCATE TABLE, người dùng cần có quyền TRUNCATE TABLE trên bảng đó. Đảm bảo rằng người dùng có đủ quyền truy cập và phân quyền để thực hiện thao tác TRUNCATE.
  • Đặt lại giá trị tự tăng (Auto Increment): TRUNCATE TABLE sẽ đặt lại giá trị tự tăng (auto increment) về giá trị ban đầu. Điều này có thể ảnh hưởng đến các bảng có quan hệ khóa ngoại, nên hãy kiểm tra cẩn thận các ràng buộc liên quan trước khi sử dụng TRUNCATE TABLE.
  • Ảnh hưởng đến các trigger và quy tắc: TRUNCATE TABLE có thể ảnh hưởng đến các trigger và quy tắc (trigger và rule) có liên quan đến bảng. Hãy kiểm tra và đảm bảo rằng việc xóa dữ liệu không gây ra tác động không mong muốn đến các trigger và quy tắc trong cơ sở dữ liệu của bạn.
  • Không ghi log dữ liệu: TRUNCATE TABLE không ghi log cho từng dòng dữ liệu bị xóa. Điều này có thể làm giảm tải hệ thống và dung lượng bộ nhớ được sử dụng, nhưng cũng có nghĩa là bạn không thể phục hồi dữ liệu đã xóa.

Xem thêm Kích thước của page table trong hệ điều hành

Tìm hiểu Truncate trong Oracle

Khác với lệnh delete, khi bạn sử dụng lệnh truncate thì bạn không thể rollback, nghĩa là đã xóa là ra đi không có đường trở lại.

Lệnh truncate không ảnh hưởng tới các thiết lập khác của bảng như khóa chính, trigger.

Cú pháp như sau:

Trong đó table_name là tên bảng mà bạn muốn xóa.

Ví dụ: Xóa tất cả dữ liệu của bảng customers.

Chạy lệnh này xong bạn hãy kiểm tra dữ liệu của table nhé, bạn sẽ thấy nó đã mất sạch không còn một record nào cả.

T-SQL - Truncate Table
T-SQL – Truncate Table

Cú pháp của TRUNCATE table trong SQL

Cú pháp của TRUNCATE TABLE trong SQL như sau:

TRUNCATE TABLE table_name;

Trong đó:


  • TRUNCATE TABLE

    là cú pháp để xóa tất cả các dòng trong một bảng.

  • table_name

    là tên của bảng mà bạn muốn xóa dữ liệu.

Lưu ý rằng khi sử dụng câu lệnh TRUNCATE TABLE, tất cả các dòng trong bảng sẽ bị xóa mà không có khả năng phục hồi. Ngoài ra, TRUNCATE TABLE cũng không ghi lại các hoạt động xóa vào log của cơ sở dữ liệu, do đó nó nhanh hơn so với câu lệnh DELETE TABLE.

Xem thêm Tự học html: table

Ví dụ về việc sử dụng TRUNCATE table trong SQL

Dưới đây là một ví dụ về việc sử dụng TRUNCATE TABLE trong SQL:

Giả sử chúng ta có một bảng “Customers” trong cơ sở dữ liệu và chúng ta muốn xóa tất cả dữ liệu trong bảng này bằng cách sử dụng TRUNCATE TABLE.

TRUNCATE TABLE Customers;

Trong ví dụ này, câu lệnh TRUNCATE TABLE được sử dụng để xóa tất cả các dòng trong bảng “Customers”. Sau khi thực thi câu lệnh, bảng “Customers” sẽ không còn chứa bất kỳ dữ liệu nào. Lưu ý rằng cấu trúc của bảng sẽ được giữ nguyên sau khi dữ liệu bị xóa.

Với ví dụ trên, chúng ta đã xóa tất cả dữ liệu trong bảng “Customers” bằng cách sử dụng TRUNCATE TABLE. Tuy nhiên, hãy cẩn thận khi sử dụng TRUNCATE TABLE vì dữ liệu bị xóa không thể khôi phục lại và không ghi lại trong log của cơ sở dữ liệu. Hãy đảm bảo bạn đã sao lưu dữ liệu quan trọng trước khi sử dụng TRUNCATE TABLE.

Xem thêm Hướng dẫn Table Layout trong android

Lời kết

Như vậy lệnh Truncate có chức năng tương tự như lệnh delete khi không có điều kiện xóa, nên trường hợp bạn muốn xóa sách mà không có cơ hội roolback thì hãy sử dụng truncate, còn không thì sử dụng delete.

* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.

* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888

* Chi tiết tham khảo:

https://bit.ly/oaz_w

=============================

KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:

📧 Mail: [email protected]

☎️ Mobile/Zalo: 0902912888

👨 Facebook: https://www.facebook.com/BinhOracleMaster

👨 Inbox Messenger: https://m.me/101036604657441 (profile)

👨 Fanpage: https://www.facebook.com/tranvanbinh.vn

👨 Inbox Fanpage: https://m.me/tranvanbinh.vn

👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam

👨 Website: https://www.tranvanbinh.vn

👨 Blogger: https://tranvanbinhmaster.blogspot.com

🎬 Youtube: https://www.youtube.com/@binhguru

👨 Tiktok: https://www.tiktok.com/@binhguru

👨 Linkin: https://www.linkedin.com/in/binhoracle

👨 Twitter: https://twitter.com/binhguru

👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6

👨 Địa chỉ: Tòa nhà Sun Square – 21 Lê Đức Thọ – Phường Mỹ Đình 1 – Quận Nam Từ Liêm – TP.Hà Nội

=============================

oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

Lệnh TRUNCATE TABLE trong SQL Server

Lệnh TRUNCATE TABLE được dùng để xóa tất cả bản ghi từ 1 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 lệnh TRUNCATE TABLE trong SQL Server

TRUNCATE TABLE [ten

_CSDL.] [ten_schema.] ten_bang


[ WITH (PARTITIONS (so_phanvung


| so _phanvung TO so _p

hanvung ) ] ;

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

ten_CSDL

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

ten_scheme

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

ten_bang

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

WITH (PARTITIONS (so_phanvung | so _phanvung TO so _phanvung )

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

Lưu ý

  • Nếu xóa toàn bộ bản ghi trong bảng, bộ đếm ở mọi cột tự tăng giá trị (indentity column) sẽ bị lặp lại từ đầu.
  • Không thể xóa toàn bộ bản ghi trong bảng được tham chiếu bằng Foreign Key.
  • Trước khi xóa toàn bộ bản ghi trong bản, phải có quyền ưu tiên như ALTER TABLE.

Ví dụ

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

TRUNCATE TABLE nhanvien;

Ví dụ này sẽ xóa toàn bộ bản ghi trong bảng nhanvien.

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

DELETE FROM nhanvien;

Cả 2 lệnh trên đều xóa tất cả dữ liệu trong bảng nhanvien. Khác nhau ở chỗ là với lệnh DELETE bạn có thể quay về thao tác trước khi xóa nếu muốn còn với TRUNCATE thì không.

Cùng xem ví dụ khác có tên của cơ sở dữ liệu.

TRUNCATE TABLE

totn.danhba;

Ví dụ này xóa tất cả bản ghi của bảng danhba trong cơ sở dữ liệu có tên totn.

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

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

TRUNCATE TABLE nhanvienWITH (PARTITIONS (1 TO 5, 7) );

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

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

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

Trả lời: Lệnh TRUNCATE TABLE có thể rollback được bằng cách dùng chuyển tiếp (transaction). Ví dụ như dưới đây.

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;

Lệnh SELECT nói trên sẽ trả về kết quả là các bản ghi dưới đây.


cot1


----------

Như vậy, đã lấy lại trạng thái cơ sở dữ liệu về trạng thái cũ và 3 bản ghi vẫn nằm trên bang_test.

Bài trước: Lệnh DELETE trong SQL Server

Bài sau: Điều kiện EXISTS trong SQL Server

DELETE VS TRUNCATE VS DROP IN SQL
DELETE VS TRUNCATE VS DROP IN SQL

Lời kết

Như vậy lệnh Truncate có chức năng tương tự như lệnh delete khi không có điều kiện xóa, nên trường hợp bạn muốn xóa sách mà không có cơ hội roolback thì hãy sử dụng truncate, còn không thì sử dụng delete.

Lệnh TRUNCATE trong SQL có chức năng xóa toàn bộ dữ liệu của một bảng hoặc một phần tương đối của bảng (nhưng không thể xóa chỉ một dòng cụ thể trong bảng). Lệnh TRUNCATE xóa toàn bộ các hàng trong bảng và giải phóng tài nguyên, điều này khiến cho tốc độ thực hiện nhanh hơn so với lệnh DELETE. Tuy nhiên, việc sử dụng lệnh TRUNCATE cần phải thận trọng, bởi vì không thể hoàn tác lại các dữ liệu đã bị xóa và không thể áp dụng cho các bảng có các ràng buộc khóa ngoại.

Có thể bạn quan tâm

Lệnh Truncate Table trong Oracle

Trong bài này ta sẽ tìm hiểu một lệnh có chức năng tương tự như lệnh delete đó là lệnh truncate. Lệnh Truncate sẽ xóa toàn bộ các records có trong bảng, điều này đồng nghĩa với bạn sử dụng lệnh delete không nhập điều kiện xóa.

Câu hỏi đặt ra là tại sao ta không sử dụng lệnh Delete mà lại sử dụng Truncate? Để trả lời thì bạn xem các phần tiếp theo nhé.

5. How to Truncate table | The TRUNCATE TABLE Command
5. How to Truncate table | The TRUNCATE TABLE Command

Có thể bạn quan tâm

Phân biệt truncate và delete trong sql

This post hasn’t been updated for 5 years


  1. DELETE
  • Cú pháp:

    DELETE FROM table_name WHERE condition;
  • Hoặc nếu muốn xóa cả bảng thì chúng ta có cú pháp:

    DELETE FROM table_name;
  • Khi chạy lệnh

    DELETE

    thì SQL sẽ log lại từng dòng đã xóa vào

    transaction log

    , vì thế nên khi bạn tạo 1 record mới, giá trị của

    id

    sẽ không bắt đầu từmà sẽ có giá trị

    n+1

    vớilà giá trị của record cuối cùng được tạo.
  • Ví dụ:
  • Chạy lệnh

    DELETE from products where productCode = 'S10_1678';

  • select * from products where productCode = 'S10_1678';
  • Vậy là giá trị

    productCode

    = ‘S10_1678’ đã bị xóa khỏi DB;
  • Tiếp đến là ví dụ về xóa cả bảng với

    DELETE

  • delete from products;
  • Và bây giờ bảng đã trống trơn

  1. TRUNCATE
  • Cú pháp:

    TRUNCATE TABLE table_name;
  • Đối với

    TRUNCATE

    chúng ta chỉ có thể dùng cho bảng chứ không thể dùng cho từng record.
  • Khi chạy lệnh

    TRUNCATE

    thì SQL sẽ xóa hết dữ liệu của bảng và reset

    transaction log

    , vì thế khi tạo 1 record mới, giá trị cua

    id

    sẽ bắt đầu từ, đây cũng chính là khác biệt lớn nhất của

    DELETE



    TRUNCATE

    .
  • Ví dụ
  • Chúng ta sẽ chạy lệnh

    TRUNCATE table products

    với bảng ví dụ ở trên
  • Như các bạn có thể thấy bản chất câu lệnh

    DELETE

    là xóa từng row khi có 109 rows đã bị tác động còn

    TRUNCATE

    đơn giản là xóa cả 1 dữ liệu của 1 bảng không kể số lượng dòng khi có 0 rows đã bị tác động.
  1. 1 vài điều lưu ý

  • TRUNCATE

    không thể chạy được khi bảng bạn định xóa có

    foreign_key

    (nếu bảng đó có

    foreign_key

    trỏ đến chính nó thì bạn có thể xóa bình thường)
  • Dữ liệu bị xóa bởi

    DELETE

    có thể

    restored

    được còn

    TRUNCATE

    thì không.
  • Tùy vào từng trường hợp thì bạn sẽ dùng

    DELETE

    hoặc

    TRUNCATE

    ,

    TRUNCATE

    sẽ luôn nhanh hơn vì nó tiêu tốn ít bộ nhớ hơn, các bạn có thể cân nhắc điều này khi cần xóa 1 bảng lớn vs nhiều record.

All Rights Reserved

Lệnh TRUNCATE TABLE trong SQL được sử dụng để xóa hoàn toàn dữ liệu từ một bảng hiện có.

Bạn cũng có thể sử dụng lệnh DROP TABLE để xóa toàn bộ bảng nhưng nó sẽ xóa bỏ cấu trúc bảng khỏi cơ sở dữ liệu và bạn sẽ cần phải tạo lại bảng này một lần nữa nếu bạn muốn lưu trữ một số dữ liệu.

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

Nếu sử dụng lệnh TRUNCATE TABLE tôi có thể hoàn tác để lấy lại dữ liệu hay không?

Có nhưng khá phức tạp với cách chuyển tiếp để rollback. Ví dụ:

CREATE TABLE bang_nhap (cot1 int);

INSERT INTO bang_nhap VALUES (1);

INSERT INTO bang_nhap VALUES (2);

INSERT INTO bang_nhap VALUES (3);

— Tạo chuyển tiếp

BEGIN TRAN;

— Xóa bản ghi trong bảng

TRUNCATE TABLE dbo.bảng_nháp;

— Rollback bảng đã xóa bản ghi

ROLLBACK;

SELECT * FROM bang_nhap;

Lệnh SELECT nói trên sẽ trả về kết quả sau

cot1

———-

Như vậy là bạn đã có thể hoàn tác và 3 dữ liệu sẽ trở về bang_nhap.

Kiến thức nền về TRUNCATE TABLE trong SQL Server đã xong. Cùng đón đọc các bài viết tiếp theo của tôi để có thể làm việc với SQL một cách đơn giản hơn nhé.

Love beautiful code? We do too.

Lệnh TRUNCATE TABLE trong SQL được sử dụng để xóa hoàn toàn dữ liệu từ một bảng đang tồn tại.

Bạn cũng có thể sử dụng lệnh DROP TABLE để xóa toàn bộ bảng, nhưng nó sẽ xóa toàn bộ cấu trúc bảng từ Database và nếu bạn cần lưu giữ một vài dữ liệu trong cấu trúc bảng như vậy, bạn sẽ phải tạo lại bảng này lần nữa.

Cú pháp cơ bản của lệnh TRUNCATE TABLE trong SQL như sau:


TRUNCATE TABLE ten_bang;

Bảng

SINHVIEN

có các bản ghi sau:


+----+---------+-----+-----------+--------+ | ID | TEN | TUOI| KHOAHOC | HOCPHI | +----+---------+-----+-----------+---------+ | 1 | Hoang | 21 | CNTT | 4 | | 2 | Viet | 19 | DTVT | 3.0 | | 3 | Thanh | 18 | KTDN | 4 | | 4 | Nhan | 19 | CK | 4.5 | | 5 | Huong | 20 | TCNH | 5 | +----+---------+-----+-----------+---------+ 5 rows in set (0.00 sec)

Sau đây là ví dụ của lệnh TRUNCATE TABLE:


SQL > TRUNCATE TABLE SINHVIEN;

Bây giờ, bảng

SINHVIEN

đã bị thay đổi và sau đây là kết quả của lệnh SELECT:


SQL> SELECT * FROM SINHVIEN; Empty set (0.00 sec)

Unpublished comment

Viết câu trả lời

Lệnh TRUNCATE TABLE trong SQL

Lệnh TRUNCATE TABLE được sử dụng để xóa hoàn toàn các bản ghi từ một bảng đang tồn tại trong SQL.

Lệnh này hoạt động tương tự như DROP TABLE xóa toàn bộ bảng, nhưng TRUNCATE sẽ xóa toàn bộ cấu trúc bảng từ Database và nếu cần lưu trữ một vài dữ liệu có cấu trúc bảng như vậy, bạn sẽ phải tạo lại bảng này lần nữa.

SQL Tutorial - TRUNCATE TABLE
SQL Tutorial – TRUNCATE TABLE

Keywords searched by users: truncate table là gì

Lệnh Truncate Table Trong Sql Server
Lệnh Truncate Table Trong Sql Server
Lệnh Truncate Table Trong Sql - Quantrimang.Com
Lệnh Truncate Table Trong Sql – Quantrimang.Com
Postgresql] Truncate Bảng Csdl (Truncate Table) - Vinasupport
Postgresql] Truncate Bảng Csdl (Truncate Table) – Vinasupport
Truncate Table Trong Sql - W3Seo Hướng Dẫn Các Lệnh Truncate
Truncate Table Trong Sql – W3Seo Hướng Dẫn Các Lệnh Truncate
Phân Biệt Truncate Và Delete Trong Sql
Phân Biệt Truncate Và Delete Trong Sql
Postgresql] Truncate Bảng Csdl (Truncate Table) - Vinasupport
Postgresql] Truncate Bảng Csdl (Truncate Table) – Vinasupport
Insert, Delete, Update Table Trong Sql Server | How Kteam
Insert, Delete, Update Table Trong Sql Server | How Kteam
Lệnh Truncate Table Trong Sql Server
Lệnh Truncate Table Trong Sql Server
Truncate In Sql: Step-By-Step Guide To Perform Truncate In Sql
Truncate In Sql: Step-By-Step Guide To Perform Truncate In Sql
Ddl Là Gì? Những Tính Năng Hữu Ích Của Ddl
Ddl Là Gì? Những Tính Năng Hữu Ích Của Ddl
Database] Sự Khác Nhau Giữa Hai Câu Lệnh Truncate Vs Delete Trong Sqlserver
Database] Sự Khác Nhau Giữa Hai Câu Lệnh Truncate Vs Delete Trong Sqlserver
Sql Server Cơ Bản | Hướng Dẫn Sử Dụng Alter Table, Truncate Table, Drop  Table Trong Sql Server - Youtube
Sql Server Cơ Bản | Hướng Dẫn Sử Dụng Alter Table, Truncate Table, Drop Table Trong Sql Server – Youtube
Câu Lệnh Truncate Table Trong Mysql - Loại Bỏ Tất Cả Bản Ghi
Câu Lệnh Truncate Table Trong Mysql – Loại Bỏ Tất Cả Bản Ghi
How To Truncate Table In Sql - Youtube
How To Truncate Table In Sql – Youtube
Lệnh Truncate Table Trong Sql Server
Lệnh Truncate Table Trong Sql Server
Sql Server Cơ Bản | Hướng Dẫn Sử Dụng Alter Table, Truncate Table, Drop  Table Trong Sql Server - Youtube
Sql Server Cơ Bản | Hướng Dẫn Sử Dụng Alter Table, Truncate Table, Drop Table Trong Sql Server – Youtube
Lệnh Truncate Table Trong Sql Server - Hkt Soft
Lệnh Truncate Table Trong Sql Server – Hkt Soft
Lệnh Truncate Table Trong Sql Server
Lệnh Truncate Table Trong Sql Server
Sql Server Cơ Bản | Hướng Dẫn Sử Dụng Alter Table, Truncate Table, Drop  Table Trong Sql Server - Youtube
Sql Server Cơ Bản | Hướng Dẫn Sử Dụng Alter Table, Truncate Table, Drop Table Trong Sql Server – Youtube
Truncate Table - Lệnh Xóa Dữ Liệu
Truncate Table – Lệnh Xóa Dữ Liệu
Truncate In Sql: Step-By-Step Guide To Perform Truncate In Sql
Truncate In Sql: Step-By-Step Guide To Perform Truncate In Sql
Khởi Tạo, Xóa, Sửa Table Trong Sql Server | How Kteam
Khởi Tạo, Xóa, Sửa Table Trong Sql Server | How Kteam
Truncate Table Trong Sql - W3Seo Hướng Dẫn Các Lệnh Truncate
Truncate Table Trong Sql – W3Seo Hướng Dẫn Các Lệnh Truncate
Sql Server Cơ Bản | Hướng Dẫn Sử Dụng Alter Table, Truncate Table, Drop  Table Trong Sql Server - Youtube
Sql Server Cơ Bản | Hướng Dẫn Sử Dụng Alter Table, Truncate Table, Drop Table Trong Sql Server – Youtube
Lệnh Truncate Table Trong Sql Server
Lệnh Truncate Table Trong Sql Server
Sql Truncate() | Learn The Examples Of Truncate Table Statement
Sql Truncate() | Learn The Examples Of Truncate Table Statement
Mysql Truncate Table Statement
Mysql Truncate Table Statement
Vi] Sql Developer- Không Thể Drop Hoặc Truncate Table Ví Có Liên Kết Với  Table Khác? - Youtube
Vi] Sql Developer- Không Thể Drop Hoặc Truncate Table Ví Có Liên Kết Với Table Khác? – Youtube

See more here: kientrucannam.vn

Trả lời

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 *