Câu lệnh DELETE trong MySQL

Câu lệnh DELETE trong MySQL
Câu lệnh DELETE trong MySQL

Chức năng của Câu lệnh DELETE trong MySQL

Câu lệnh DELETE trong MySQL dùng để xóa một hàng hoặc nhiều hàng tùy từng điều kiện khác nhau, nếu không để điều kiện thì mặc định xóa toàn bộ dữ liệu trong bảng.

Code Câu lệnh DELETE trong MySQL

delete from tb_sanpham where id=5;
<?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"');
   // Xóa sản phẩm có id =5
   $sql ="delete from tb_sanpham where id=5";
   $ketquain = mysql_query($sql,$conn);
   if(!$ketquain){
	  die('Không thể xóa dữ liệu: ' . mysql_error());  
   }else{
	  echo "Xóa sản phẩm có id bằng 5 thành công!<br>"; 	   
   }
   echo "<b>Xem lại bảng sau khi xóa sản phẩm</b><br>";
   // Truy vấn bảng
   $sql = "select id,ten,gia from tb_sanpham";
   // Kết quả truy vấn trả về mảng
   $ketqua = mysql_query($sql,$conn);
   if(!$ketqua){
	  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($ketqua, MYSQL_ASSOC)){
		 echo
         "ID: {$row['id']} <br> ".
         "Tên sản phẩm: {$row['ten']} <br> ".
         "Giá : {$row['gia']} <br> ".
         "--------------------------------<br>";
     }		 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

Xóa sản phẩm có id bằng 5 thành công!
Xem lại bảng sau khi xóa sản phẩm
ID: 1
Tên sản phẩm: Dàn karaoke gia đình KTreasure FE12 thương hiệu Đức
Giá : 55000000
--------------------------------
ID: 2
Tên sản phẩm: Dàn karaoke gia đình KTreasure TD12 mới nhất
Giá : 44550000
--------------------------------
ID: 3
Tên sản phẩm: Dàn âm thanh nghe nhạc AV01
Giá : 25000000
--------------------------------
ID: 4
Tên sản phẩm: Dàn âm thanh nghe nhạc AV02
Giá : 30000000
--------------------------------
ID: 6
Tên sản phẩm: Micro Shure SM58-LC
Giá : 2700000
--------------------------------
ID: 7
Tên sản phẩm: Micro AKG D7 S
Giá : 3400000
--------------------------------

Những lỗi thường gặp khi sử dụng DELETE trong MySQL

Thao tác xóa dữ liệu cần được thực hiện cẩn thận, bởi một câu lệnh sai có thể làm mất nhiều bản ghi hơn dự kiến. Trước khi chạy DELETE, nên xác định chính xác dữ liệu cần xóa và kiểm tra điều kiện lọc.

Xóa nhầm dữ liệu do thiếu điều kiện WHERE

Một trong những lỗi nghiêm trọng nhất là thực hiện DELETE mà không có điều kiện WHERE. Khi đó, MySQL có thể xóa toàn bộ bản ghi trong bảng.

DELETE FROM users;

Trong ví dụ trên, tất cả dữ liệu của bảng users sẽ bị xóa. Nếu chỉ muốn xóa một tài khoản cụ thể, cần xác định điều kiện rõ ràng.

DELETE FROM users
WHERE id = 15;

Trước khi thực hiện, có thể dùng câu lệnh SELECT với cùng điều kiện để kiểm tra bản ghi sẽ bị tác động.

SELECT *
FROM users
WHERE id = 15;

Xóa nhiều bản ghi hơn dự kiến

Ngay cả khi có WHERE, điều kiện quá rộng vẫn có thể khiến nhiều bản ghi bị xóa cùng lúc. Chẳng hạn, lọc theo trạng thái có thể tác động đến toàn bộ dữ liệu cùng trạng thái đó.

DELETE FROM orders
WHERE status = 'cancelled';

Nếu mục tiêu chỉ là xóa một số bản ghi nhất định, nên kiểm tra số lượng và danh sách dữ liệu phù hợp trước khi chạy lệnh. Đặc biệt, cần thận trọng với các điều kiện dựa trên cột không có tính duy nhất.

Không kiểm tra dữ liệu trước khi thực hiện DELETE

Thói quen chạy DELETE ngay sau khi viết điều kiện dễ dẫn đến sai sót. Cách an toàn hơn là thay DELETE bằng SELECT để xem trước các bản ghi có thể bị xóa.

SELECT id, name, email
FROM users
WHERE status = 'inactive';

Nếu kết quả đúng với dữ liệu cần loại bỏ, mới chuyển sang câu lệnh xóa tương ứng.

DELETE FROM users
WHERE status = 'inactive';

Cách kiểm tra này đặc biệt hữu ích khi điều kiện có nhiều tiêu chí hoặc thao tác trên bảng chứa dữ liệu quan trọng.

Cách hạn chế rủi ro khi xóa dữ liệu

Để giảm nguy cơ xóa nhầm, nên hình thành quy trình kiểm tra trước mỗi thao tác xóa. Trước hết, xác định đúng bảng và điều kiện WHERE, sau đó dùng SELECT để kiểm tra dữ liệu thực tế.

Với dữ liệu quan trọng, nên cân nhắc sử dụng transaction để có thể kiểm tra kết quả trước khi xác nhận thay đổi. Đồng thời, việc sao lưu dữ liệu định kỳ cũng giúp giảm thiểu hậu quả nếu xảy ra sự cố.

  • Kiểm tra đúng tên bảng trước khi xóa.
  • Dùng SELECT để kiểm tra điều kiện trước khi chạy DELETE.
  • Không bỏ qua WHERE nếu không có chủ đích xóa toàn bộ dữ liệu.
  • Kiểm tra số lượng bản ghi dự kiến bị ảnh hưởng.
  • Thận trọng khi xóa dữ liệu có liên kết với các bảng khác.
  • Sao lưu dữ liệu trước những thao tác xóa quan trọng.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Câu lệnh DELETE 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ề Câu lệnh DELETE 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) !