1. Giới thiệu
Câu lệnh DELETE trong MySql được sử dụng để xóa một hoặc nhiều bản ghi khỏi bảng trong cơ sở dữ liệu. Khi bạn cần loại bỏ dữ liệu cũ hoặc không còn phù hợp, câu lệnh DELETE sẽ giúp bạn thực hiện điều này. Tuy nhiên, bạn cần cẩn trọng khi sử dụng DELETE, vì nếu không chỉ định điều kiện WHERE, toàn bộ dữ liệu trong bảng có thể bị xóa.
Bài viết này sẽ hướng dẫn chi tiết cách sử dụng câu lệnh DELETE, kèm theo các ví dụ thực tế để bạn có thể áp dụng trong công việc quản lý dữ liệu của mình.
2. SQL DELETE là gì?
Câu lệnh DELETE được sử dụng để xóa các bản ghi khỏi bảng trong cơ sở dữ liệu. Bạn có thể sử dụng DELETE để xóa một hoặc nhiều bản ghi thỏa mãn điều kiện cụ thể. Nếu không có điều kiện WHERE, toàn bộ dữ liệu trong bảng sẽ bị xóa.
Cú pháp tổng quát của SQL DELETE trong MySql:
DELETE FROM table_name
WHERE condition;table_name: Tên của bảng chứa các bản ghi bạn muốn xóa.condition: Điều kiện lọc để xác định các bản ghi cần xóa. Nếu không có điều kiện, toàn bộ bản ghi trong bảng sẽ bị xóa.
3. Cách sử dụng SQL DELETE
a. Xóa một bản ghi cụ thể
Bạn có thể sử dụng DELETE để xóa một bản ghi cụ thể khỏi bảng bằng cách sử dụng điều kiện WHERE để xác định bản ghi đó.
Ví dụ 1: Xóa một nhân viên với employee_id là 101
DELETE FROM employees
WHERE employee_id = 101;Câu lệnh này sẽ xóa nhân viên có employee_id là 101 khỏi bảng employees.
b. Xóa nhiều bản ghi dựa trên điều kiện
Bạn cũng có thể xóa nhiều bản ghi cùng lúc bằng cách sử dụng điều kiện WHERE để lọc ra các bản ghi phù hợp.
Ví dụ 2: Xóa tất cả các nhân viên thuộc phòng ban "Sales"
DELETE FROM employees
WHERE department = 'Sales';Câu lệnh này sẽ xóa tất cả các nhân viên trong phòng ban "Sales".
c. Xóa tất cả các bản ghi trong bảng
Nếu bạn muốn xóa toàn bộ bản ghi trong bảng nhưng vẫn giữ cấu trúc của bảng, bạn có thể sử dụng câu lệnh DELETE mà không cần điều kiện WHERE.
Ví dụ 3: Xóa toàn bộ dữ liệu trong bảng employees
DELETE FROM employees;Câu lệnh này sẽ xóa toàn bộ dữ liệu trong bảng employees, nhưng cấu trúc bảng vẫn được giữ lại.
4. Các ví dụ nâng cao về SQL DELETE
a. Xóa với toán tử so sánh
Bạn có thể sử dụng các toán tử so sánh như >, <, = để xác định các bản ghi cần xóa.
Ví dụ 4: Xóa các nhân viên có tuổi lớn hơn 60
DELETE FROM employees
WHERE age > 60;Câu lệnh này sẽ xóa tất cả các nhân viên có độ tuổi lớn hơn 60.
b. Xóa với toán tử IN
Sử dụng toán tử IN để xóa các bản ghi có giá trị thuộc một danh sách nhất định.
Ví dụ 5: Xóa các nhân viên có employee_id là 101, 102, và 103
DELETE FROM employees
WHERE employee_id IN (101, 102, 103);Câu lệnh này sẽ xóa các nhân viên có employee_id là 101, 102, và 103.
c. Xóa với toán tử BETWEEN
Bạn có thể sử dụng toán tử BETWEEN để xóa các bản ghi có giá trị nằm trong một khoảng cụ thể.
Ví dụ 6: Xóa các đơn hàng có tổng giá trị nằm trong khoảng từ 1 triệu đến 5 triệu
DELETE FROM orders
WHERE total_amount BETWEEN 1000000 AND 5000000;Câu lệnh này sẽ xóa tất cả các đơn hàng có giá trị tổng nằm trong khoảng từ 1 triệu đến 5 triệu.
d. Xóa với toán tử LIKE
Sử dụng toán tử LIKE trong WHERE để tìm kiếm và xóa các bản ghi có giá trị chuỗi phù hợp với một mẫu nhất định.
Ví dụ 7: Xóa tất cả các khách hàng có tên bắt đầu bằng chữ "A"
DELETE FROM customers
WHERE first_name LIKE 'A%';Câu lệnh này sẽ xóa tất cả các khách hàng có tên bắt đầu bằng chữ "A".
e. Xóa các bản ghi có giá trị NULL
Bạn có thể sử dụng DELETE để xóa các bản ghi có giá trị NULL trong một hoặc nhiều cột.
Ví dụ 8: Xóa các đơn hàng chưa có ngày giao hàng (giá trị NULL ở cột delivery_date)
DELETE FROM orders
WHERE delivery_date IS NULL;Câu lệnh này sẽ xóa tất cả các đơn hàng chưa có thông tin ngày giao hàng.
5. Một số lưu ý khi sử dụng SQL DELETE
a. Cẩn thận khi không sử dụng WHERE
Nếu bạn không sử dụng điều kiện WHERE trong câu lệnh DELETE, toàn bộ dữ liệu trong bảng sẽ bị xóa. Điều này có thể gây hậu quả nghiêm trọng, vì dữ liệu không thể khôi phục lại nếu không có bản sao lưu.
Ví dụ:
DELETE FROM employees; -- Mọi bản ghi trong bảng employees sẽ bị xóab. Sử dụng LIMIT để giới hạn số bản ghi bị xóa
Nếu bạn muốn xóa một số lượng bản ghi nhất định, bạn có thể sử dụng từ khóa LIMIT để giới hạn số lượng bản ghi bị xóa. Tuy nhiên, không phải tất cả các hệ quản trị cơ sở dữ liệu đều hỗ trợ LIMIT trong câu lệnh DELETE.
Ví dụ:
DELETE FROM employees
WHERE department = 'HR'
LIMIT 5; -- Chỉ xóa 5 nhân viên đầu tiên trong bộ phận HRc. Kiểm tra kết quả trước khi xóa
Trước khi xóa các bản ghi, bạn nên chạy câu lệnh SELECT với cùng điều kiện WHERE để kiểm tra kết quả trước. Điều này giúp đảm bảo bạn sẽ không vô tình xóa nhầm dữ liệu.
Ví dụ:
-- Kiểm tra trước khi xóa
SELECT * FROM employees
WHERE department = 'Sales';6. Các ví dụ về SQL DELETE
Ví dụ 1: Xóa các đơn hàng đặt trước ngày 01/09/2023
DELETE FROM orders
WHERE order_date < '2023-09-01';Ví dụ 2: Xóa tất cả các sản phẩm thuộc danh mục "Expired"
DELETE FROM products
WHERE category = 'Expired';Ví dụ 3: Xóa các khách hàng có địa chỉ email là NULL
DELETE FROM customers
WHERE email IS NULL;Ví dụ 4: Xóa tất cả các đơn hàng có tổng giá trị nhỏ hơn 100.000
DELETE FROM orders
WHERE total_amount < 100000;7. Kết luận
Câu lệnh DELETE trong SQL là một công cụ mạnh mẽ giúp bạn xóa các bản ghi không còn phù hợp hoặc cần loại bỏ khỏi cơ sở dữ liệu. Tuy nhiên, bạn cần cẩn trọng khi sử dụng, đặc biệt là khi không có điều kiện WHERE, vì toàn bộ dữ liệu trong bảng có thể bị xóa.
Để đảm bảo an toàn cho dữ liệu, hãy luôn kiểm tra kỹ trước khi thực hiện lệnh xóa và sử dụng các điều kiện rõ ràng trong câu lệnh DELETE. Việc sử dụng cẩn thận sẽ giúp bạn quản lý dữ liệu hiệu quả và tránh các sai lầm không mong muốn.
Hãy thử áp dụng các ví dụ trong bài viết này trong các bài tập và dự án thực tế của bạn trên CodeTutHub để thành thạo hơn trong việc thao tác dữ liệu với SQL!








