SQL - IS NULL: Khám phá Bí ẩn Giá trị NULL

Xin chào các bạn đam mê cơ sở dữ liệu! Chào mừng các bạn đến với hành trình đầy thú vị vào thế giới SQL, nơi chúng ta sẽ khám phá vùng đất bí ẩn của các giá trị NULL. Tôi là người hướng dẫn của bạn, Giáo sư Query, và hôm nay chúng ta sẽ giải mã bí mật của toán tử IS NULL. Hãy chuẩn bị sổ tay ảo của bạn và cùng tôi bước vào!

SQL - IS NULL

Toán tử SQL IS NULL: Siêu nhân Phát hiện NULL

Hãy tưởng tượng bạn đang tham gia một buổi tiệc và bạn muốn biết ai là người không mang quà. Trong thế giới cơ sở dữ liệu, IS NULL giống như siêu nhân phát hiện quà, giúp bạn phát hiện những vị khách không mang quà (hoặc trong trường hợp của chúng ta, các trường dữ liệu trống).

Toán tử IS NULL được sử dụng để kiểm tra các giá trị trống (giá trị NULL) trong cơ sở dữ liệu. Nhưng đợi đã, NULL là gì exactly?

NULL không phải là số không. Nó không phải là chuỗi trống. Nó là sự vắng mặt của bất kỳ giá trị nào. Hãy nghĩ về nó như là tương đương của biểu tượng khuỳnh肩膀 trong cơ sở dữ liệu ?‍♂️.

Dưới đây là bảng nhanh của các toán tử liên quan đến NULL:

Toán tử Mô tả
IS NULL Kiểm tra nếu một giá trị là NULL
IS NOT NULL Kiểm tra nếu một giá trị không phải là NULL

Bây giờ, hãy cùng xem chúng ta có thể sử dụng siêu nhân này trong các tình huống SQL khác nhau!

IS NULL với Lệnh SELECT: Tìm kiếm các Giá trị vô hình

Cách sử dụng cơ bản

Hãy bắt đầu với một ví dụ đơn giản. Giả sử chúng ta có một bảng叫做 students với các cột student_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;

Truy vấn này sẽ trả về tất cả các hàng có trường email là NULL. Đó giống như hỏi, "Hiển thị cho tôi tất cả các sinh viên quên ghi địa chỉ email của họ!"

Kết hợp với các điều kiện khác

Chúng ta cũng có thể kết hợp IS NULL với các điều kiện khác. Ví dụ:

SELECT name, student_id
FROM students
WHERE email IS NULL AND student_id > 1000;

Truy vấn này nói, "Cung cấp cho tôi tên và ID của các sinh viên không có email và ID lớn hơn 1000." Đó giống như một thám tử, thu hẹp tiêu chí tìm kiếm của bạn!

IS NULL với Hàm COUNT(): Đếm các Voids

Hàm COUNT() có thể là một người bạn tuyệt vời với IS NULL. Hãy xem chúng hoạt động cùng nhau:

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

Truy vấn này cung cấp cho chúng ta ba thông tin:

  1. Tổng số sinh viên
  2. Số sinh viên có địa chỉ email
  3. Số sinh viên không có địa chỉ email

Nhớ rằng, COUNT(*) đếm tất cả các hàng, trong khi COUNT(email) chỉ đếm các giá trị không phải NULL. Đó giống như đếm tất cả các vị khách tiệc, sau đó đếm những người có quà, và trừ đi để tìm ra bao nhiêu người đến mà không mang quà!

IS NULL với Lệnh UPDATE: Điền vào các Ô trống

Đôi khi, chúng ta muốn cập nhật các giá trị NULL thành điều gì đó có ý nghĩa hơn. Dưới đây là cách chúng ta có thể làm điều đó:

UPDATE students
SET email = '[email protected]'
WHERE email IS NULL;

Truy vấn này thay thế tất cả các giá trị email NULL bằng '[email protected]'. Đó giống như tặng một món quà mặc định cho tất cả những vị khách không mang quà!

Ví dụ phức tạp hơn

Giả sử chúng ta muốn cập nhật các địa chỉ email NULL bằng cách kết hợp tên sinh viên và một tên miền mặc định:

UPDATE students
SET email = LOWER(REPLACE(name, ' ', '_')) || '@student.example.com'
WHERE email IS NULL;

Truy vấn này thực hiện các thao tác sau đối với các sinh viên có email NULL:

  1. Lấy tên của họ
  2. Thay thế các khoảng trống bằng dấu gạch dưới
  3. Chuyển đổi thành chữ thường
  4. Thêm '@student.example.com' ở cuối

Vậy "John Doe" sẽ trở thành "[email protected]". Đó giống như tạo ra các thẻ tên cá nhân cho những ai quên mang theo!

IS NULL với Lệnh DELETE: Loại bỏ các Trống

Đôi khi, chúng ta có thể muốn xóa các hàng có giá trị NULL. Dưới đây là cách chúng ta có thể làm điều đó:

DELETE FROM students
WHERE email IS NULL;

Truy vấn này xóa tất cả các hàng có email là NULL. Hãy cẩn thận với truy vấn này! Đó giống như đuổi tất cả các vị khách không mang quà ra khỏi tiệc - có hơi khắc nghiệt phải không?

Cách tiếp cận an toàn hơn

Thay vì xóa, chúng ta có thể muốn di chuyển các hàng này sang một bảng khác:

INSERT INTO incomplete_records
SELECT * FROM students
WHERE email IS NULL;

DELETE FROM students
WHERE email IS NULL;

Phương pháp này trước tiên di chuyển các bản ghi email NULL sang bảng 'incomplete_records' trước khi xóa chúng khỏi bảng chính. Đó giống như di chuyển các vị khách không mang quà vào một phòng khác thay vì đuổi họ ra khỏi tiệc hoàn toàn!

Kết luận: Chấp nhận NULL

Và đó là tất cả, các bạn! Chúng ta đã khám phá toán tử IS NULL và các ứng dụng khác nhau của nó trong SQL. Nhớ rằng, các giá trị NULL không phải là kẻ thù của bạn - chúng chỉ là những phần thông tin bị hiểu lầm chờ đợi được xử lý đúng cách.

Trong hành trình SQL của bạn, bạn sẽ thấy rằng việc thành thạo cách xử lý NULL là rất quan trọng để duy trì cơ sở dữ liệu sạch và chính xác. Đó giống như một người chủ tiệc giỏi, đảm bảo rằng tất cả mọi người đều được tính đến, ngay cả những người đến mà không mang quà!

Tiếp tục luyện tập, giữ vững sự tò mò và nhớ rằng: trong thế giới cơ sở dữ liệu, đôi khi không có gì (NULL) có thể có nghĩa là tất cả!

Credits: Image by storyset