MySQL - Operator IS NULL

Xin chào các bạn, những pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình đầy thú vị vào thế giới của MySQL, đặc biệt là tập trung vào toán tử IS NULL. Đừng lo lắng nếu bạn là người mới bắt đầu lập trình; tôi sẽ hướng dẫn bạn qua chủ đề này từng bước một, giống như tôi đã làm cho hàng trăm học viên trong những năm dạy học của mình. Vậy, hãy đội mũ suy nghĩ ảo của bạn, và cùng nhau lặn sâu vào!

MySQL - IS NULL Operator

Toán tử IS NULL trong MySQL

Trước khi bắt đầu, hãy tưởng tượng bạn đang tổ chức một bữa tiệc và lập danh sách khách mời. Một số bạn bè của bạn chưa RSVP, vì vậy câu trả lời của họ là chưa biết hoặc, trong ngôn ngữ cơ sở dữ liệu, NULL. Toán tử IS NULL giống như công cụ của bạn để tìm ra ai chưa trả lời.

Trong MySQL, NULL đại diện cho một giá trị bị thiếu hoặc không biết. Nó không phải là zero, không phải là chuỗi trống - nó là sự thiếu vắng của bất kỳ giá trị nào. Toán tử IS NULL giúp chúng ta tìm thấy những giá trị bị thiếu trong cơ sở dữ liệu của mình.

Dưới đây là cú pháp cơ bản:

column_name IS NULL

Đơn giản, phải không? Nhưng hãy xem chúng ta có thể sử dụng điều này trong các tình huống thực tế như thế nào.

IS NULL với câu lệnh SELECT

Câu lệnh SELECT giống như một kính lúp cho cơ sở dữ liệu của bạn. Khi kết hợp với IS NULL, nó trở thành một công cụ mạnh mẽ để tìm thông tin bị thiếu.

Giả sử chúng ta có một bảng gọi là students với các cột: id, name, và email. Một số sinh viên chưa cung cấp địa chỉ email của họ.

SELECT * FROM students WHERE email IS NULL;

Câu truy vấn này sẽ hiển thị tất cả các sinh viên chưa cung cấp địa chỉ email. Nó giống như hỏi, "Ai chúng ta cần phải催 cho email?"

Hãy phân tích nó:

  • SELECT *: Điều này có nghĩa là "chọn tất cả các cột"
  • FROM students: Chúng ta đang tìm kiếm trong bảng students
  • WHERE email IS NULL: Đây là điều kiện của chúng ta - chúng ta chỉ muốn các hàng mà email bị thiếu

Dưới đây là một ví dụ khác:

SELECT name FROM students WHERE phone_number IS NULL;

Câu truy vấn này sẽ cho chúng ta tên của các sinh viên chưa cung cấp số điện thoại. Nó giống như tạo một danh sách "để gọi"!

IS NULL với hàm COUNT()

Bây giờ, giả sử chúng ta muốn biết có bao nhiêu sinh viên chưa cung cấp địa chỉ email? Đó là nơi hàm COUNT() trở nên hữu ích.

SELECT COUNT(*) FROM students WHERE email IS NULL;

Câu truy vấn này sẽ trả về một con số duy nhất - số lượng sinh viên có email bị thiếu. Nó giống như hỏi, "Tôi cần phải gửi bao nhiêu email nhắc nhở?"

Chúng ta có thể làm cho điều này thông tin hơn:

SELECT
COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
COUNT(*) - COUNT(email) AS students_without_email
FROM students;

Câu truy vấn này cho chúng ta một bức tranh toàn diện:

  • total_students: Tổng số sinh viên
  • students_with_email: Số lượng sinh viên đã cung cấp email
  • students_without_email: Số lượng sinh viên có email bị thiếu

Nó giống như nhận một báo cáo nhanh về tiến độ thu thập thông tin liên hệ của bạn!

IS NULL với câu lệnh UPDATE

Đôi khi, chúng ta có thể muốn cập nhật cơ sở dữ liệu của mình để thay thế các giá trị NULL bằng một thứ khác. Câu lệnh UPDATE kết hợp với IS NULL có thể giúp chúng ta làm điều này.

UPDATE students SET email = 'not provided' WHERE email IS NULL;

Câu truy vấn này thay đổi tất cả các giá trị email NULL thành 'not provided'. Nó giống như điền 'N/A' vào các biểu mẫu cho thông tin bị thiếu.

Dưới đây là một ví dụ thực tế khác:

UPDATE products SET stock = 0 WHERE stock IS NULL;

Điều này có thể hữu ích trong một hệ thống tồn kho, giả sử rằng NULL tồn kho có nghĩa là chúng ta đã hết hàng.

IS NULL với câu lệnh DELETE

Trong một số trường hợp, chúng ta có thể muốn xóa các mục có thông tin bị thiếu. Câu lệnh DELETE kết hợp với IS NULL có thể giúp chúng ta làm sạch cơ sở dữ liệu.

DELETE FROM students WHERE phone_number IS NULL AND email IS NULL;

Câu truy vấn này xóa tất cả các bản ghi sinh viên mà cả số điện thoại và email đều bị thiếu. Nó giống như dọn dẹp danh sách liên hệ của bạn bằng cách loại bỏ các mục không thể liên hệ.

Hãy cẩn thận với các thao tác DELETE! Luôn kiểm tra kỹ điều kiện của bạn trước khi chạy chúng.

Toán tử IS NULL trong Chương trình Khách

Khi bạn sử dụng một chương trình khách MySQL, bạn có thể sử dụng toán tử IS NULL trong các truy vấn của mình như chúng ta đã thảo luận. Dưới đây là một đoạn mã bạn có thể chạy:

-- Kết nối đến cơ sở dữ liệu
USE school_database;

-- Tìm sinh viên có địa chỉ email bị thiếu
SELECT name FROM students WHERE email IS NULL;

-- Đếm sinh viên có số điện thoại bị thiếu
SELECT COUNT(*) AS missing_phone_numbers FROM students WHERE phone_number IS NULL;

-- Cập nhật GPA bị thiếu thành 0.0
UPDATE students SET gpa = 0.0 WHERE gpa IS NULL;

-- Xóa sinh viên không hoạt động mà không có thông tin liên hệ
DELETE FROM students WHERE last_login IS NULL AND email IS NULL AND phone_number IS NULL;

Đoạn mã này thực hiện một loạt các thao tác:

  1. Chọn cơ sở dữ liệu để sử dụng
  2. Tìm sinh viên có email bị thiếu
  3. Đếm sinh viên có số điện thoại bị thiếu
  4. Cập nhật GPA bị thiếu thành 0.0
  5. Xóa sinh viên không hoạt động mà không có thông tin liên hệ

Nhớ rằng, trong một chương trình khách, bạn có thể kết hợp các thao tác này và thậm chí tạo các hàm hoặc thủ tục lưu trữ để làm cho quản lý cơ sở dữ liệu của bạn hiệu quả hơn.

Kết luận

Và thế là bạn đã có nó, các học viên yêu quý của tôi! Chúng ta đã khám phá toán tử IS NULL trong MySQL, xem cách nó có thể được sử dụng với các câu lệnh SELECT, COUNT(), UPDATE và DELETE. Chúng ta đã học cách tìm kiếm dữ liệu bị thiếu, đếm nó, cập nhật nó và thậm chí xóa nó khi cần thiết.

Nhớ rằng, các giá trị NULL giống như những linh hồn trong cơ sở dữ liệu của bạn - chúng đại diện cho thông tin bị thiếu. Toán tử IS NULL là máy dò linh hồn của bạn, giúp bạn tìm và quản lý những giá trị bí ẩn này.

Khi bạn tiếp tục hành trình MySQL của mình, bạn sẽ tìm thấy nhiều toán tử và hàm hơn để học. Nhưng hiện tại, hãy tự động viên bản thân vì đã thành thạo IS NULL. Bạn đã tiến gần hơn một bước để trở thành một pháp sư cơ sở dữ liệu!

Tiếp tục thực hành, hãy tò mò và chúc bạn vui vẻ khi lập mã!

Credits: Image by storyset