Lệnh TRUNCATE TABLE trong MySQL

Lệnh TRUNCATE TABLE trong MySQL
Lệnh TRUNCATE TABLE trong MySQL

Chức năng của Lệnh TRUNCATE TABLE trong MySQL

Lệnh TRUNCATE TABLE trong MySQL dùng để xóa hết tất cả các hàng trong một bảng đồng thời đưa các số tự động tăng về 1, như ID khi thêm dòng đầu tiên sẽ về 1. Nếu như hàm delete tất cả bảng thì khi thêm lại một hàng thì ID sẽ không về 1, ID đang ở 999 thì khi thêm lại thì ID sẽ là 1000.

Code Lệnh TRUNCATE TABLE trong MySQL

TRUNCATE tb_online;
<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   // Lấy danh sách bảng tb_online
   echo "<b>Lấy danh sách bảng tb_online</b><br>";
   $sql ="select id,ip,time from tb_online where id>0";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể lấy dữ liệu: ' . mysql_error());  
   }
   // Dùng vòng lặp để lấy ra từng hàng trong bảng	
	while($row = mysql_fetch_array($ketquamot, MYSQL_ASSOC)){
		 echo "ID: {$row['id']} <br> ".
		 "IP: {$row['ip']} <br> ".
         "Time : {$row['time']} <br> ".
         "--------------------------------<br>";
   }
   // TRUNCATE TABLE
   echo "<b>TRUNCATE TABLE</b><br>";
   $sql ="TRUNCATE tb_online";
   $ketquahai = mysql_query($sql,$conn);
   if(!$ketquahai){
	  die('Không thể xóa dữ liệu: ' . mysql_error());  
   }else{
	   echo "TRUNCATE tb_online thành công!<br>";
   }
   // Thêm 1 dòng
   echo "<b>Thêm 1 dòng</b><br>";
   $sql ="insert into tb_online (ip,time) values('1.52.219.1','1754999345')";
   $ketquaba = mysql_query($sql,$conn);
   if(!$ketquaba){
	  die('Không thể thêm dữ liệu: ' . mysql_error());  
   }else{
	  echo "Thêm 1 dòng thành công!<br>";
   }
    // Lấy danh sách bảng tb_online
   echo "<b>Lấy danh sách bảng tb_online sau khi thêm 1 dòng</b><br>";
   $sql ="select id,ip,time from tb_online where id>0";
   $ketquabon = mysql_query($sql,$conn);
   if(!$ketquabon){
	  die('Không thể lấy dữ liệu: ' . mysql_error());  
   }
   // Dùng vòng lặp để lấy ra từng hàng trong bảng	
	while($row = mysql_fetch_array($ketquabon, MYSQL_ASSOC)){
		 echo "ID: {$row['id']} <br> ".
		 "IP: {$row['ip']} <br> ".
         "Time : {$row['time']} <br> ".
         "--------------------------------<br>";
   }
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Lấy danh sách bảng tb_online
ID: 1
IP: 1.52.218.60
Time : 1754999345
--------------------------------
ID: 2
IP: 1.53.13.80
Time : 1754991002
--------------------------------
ID: 3
IP: 1.53.241.197
Time : 1754844472
--------------------------------
TRUNCATE TABLE
TRUNCATE tb_online thành công!
Thêm 1 dòng
Thêm 1 dòng thành công!
Lấy danh sách bảng tb_online sau khi thêm 1 dòng
ID: 1
IP: 1.52.219.1
Time : 1754999345
--------------------------------

TRUNCATE TABLE khác gì DELETE và DROP TABLE trong MySQL?

Ba lệnh TRUNCATE TABLE, DELETEDROP TABLE đều có thể làm dữ liệu trong MySQL biến mất, nhưng mức độ tác động hoàn toàn khác nhau. Điểm cần phân biệt là DELETE chủ yếu dùng để xóa các bản ghi, TRUNCATE TABLE làm sạch toàn bộ dữ liệu của bảng, còn DROP TABLE xóa cả bảng khỏi cơ sở dữ liệu.

Lệnh Tác động chính Giữ cấu trúc bảng
DELETE Xóa một hoặc nhiều bản ghi
TRUNCATE TABLE Xóa toàn bộ dữ liệu trong bảng
DROP TABLE Xóa toàn bộ bảng Không

TRUNCATE TABLE và DELETE khác nhau như thế nào?

DELETE cho phép chọn chính xác những bản ghi cần xóa thông qua điều kiện WHERE. Vì vậy, lệnh này phù hợp khi chỉ muốn loại bỏ một phần dữ liệu nhưng vẫn giữ lại những bản ghi còn cần thiết.

DELETE FROM users
WHERE status = 'inactive';

Trong khi đó, TRUNCATE TABLE xóa toàn bộ dữ liệu trong bảng và không sử dụng điều kiện WHERE. Đây là lựa chọn phù hợp khi muốn đưa một bảng về trạng thái không còn bản ghi nhưng vẫn giữ nguyên cấu trúc để tiếp tục sử dụng.

TRUNCATE TABLE users;

Một điểm đáng chú ý là TRUNCATE TABLE thường xử lý việc làm rỗng bảng nhanh và gọn hơn so với việc dùng DELETE để xóa toàn bộ bản ghi. Với các bảng có cột tự tăng, việc TRUNCATE TABLE cũng có thể đưa bộ đếm AUTO_INCREMENT về trạng thái ban đầu.

TRUNCATE TABLE và DROP TABLE khác nhau như thế nào?

TRUNCATE TABLE chỉ loại bỏ dữ liệu bên trong bảng. Sau khi thực hiện, bảng vẫn tồn tại với các cột, kiểu dữ liệu và cấu trúc đã khai báo trước đó.

TRUNCATE TABLE products;

Ngược lại, DROP TABLE xóa cả dữ liệu lẫn cấu trúc bảng. Sau khi lệnh được thực hiện, bảng không còn tồn tại để tiếp tục truy vấn hoặc thêm dữ liệu.

DROP TABLE products;

Vì vậy, nếu chỉ muốn làm sạch dữ liệu để tái sử dụng bảng, nên cân nhắc TRUNCATE TABLE. Nếu bảng không còn cần thiết và muốn loại bỏ hoàn toàn khỏi cơ sở dữ liệu, DROP TABLE mới là lựa chọn phù hợp.

Nên dùng TRUNCATE, DELETE hay DROP TABLE?

Hãy lựa chọn lệnh dựa trên mục đích thực tế thay vì chỉ dựa vào tốc độ thực thi:

  • DELETE: dùng khi cần xóa một phần dữ liệu hoặc cần xác định bản ghi bằng điều kiện WHERE.
  • TRUNCATE TABLE: dùng khi muốn xóa toàn bộ dữ liệu nhưng vẫn giữ lại bảng để sử dụng tiếp.
  • DROP TABLE: dùng khi muốn loại bỏ hoàn toàn cả dữ liệu và cấu trúc của bảng.

Đặc biệt, cần thận trọng với TRUNCATE TABLEDROP TABLE trên cơ sở dữ liệu đang hoạt động. Nếu mục tiêu chỉ là xóa một số bản ghi, DELETE sẽ an toàn và linh hoạt hơn vì có thể giới hạn phạm vi dữ liệu cần xử lý.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Lệnh TRUNCATE TABLE trong MySQL.

Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Lệnh TRUNCATE TABLE trong MySQL
Email, Điện thoại 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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !