Câu lệnh DELETE trong MySQL
Trần Thị Vân
- 1212
- 13/08/2025
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
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 *