SQL - IS NOT NULL: Hướng dẫn cơ bản

Xin chào, những pháp sư SQL tương lai! Hôm nay, chúng ta sẽ khám phá một khía cạnh thú vị của SQL mà tôi đã thấy nhiều sinh viên gặp khó khăn trong những năm qua. Nhưng đừng lo lắng - đến cuối bài hướng dẫn này, bạn sẽ xử lý các giá trị NULL như một chuyên gia!

SQL - IS NOT NULL

Оператор SQL IS NOT NULL

Hãy bắt đầu từ những điều cơ bản. Trong SQL, NULL là một giá trị đặc biệt (hoặc đúng hơn, là sự thiếu vắng giá trị) đại diện cho thông tin bị thiếu hoặc không rõ. Nó giống như khi bạn điền vào một biểu mẫu và để trống một trường - đó chính là NULL trong cơ sở dữ liệu.

Bây giờ, đây là phần phức tạp: bạn không thể sử dụng các оператор so sánh thông thường như = hoặc != với NULL. Đó là lúc người hùng của chúng ta xuất hiện - оператор IS NOT NULL!

Cú pháp cơ bản

Cú pháp cơ bản cho IS NOT NULL là:

SELECT column_name(s)
FROM table_name
WHERE column_name IS NOT NULL;

Hãy phân tích này với một ví dụ thực tế. Giả sử chúng ta có một bảng叫做 students với các cột student_id, name, và email.

SELECT name, email
FROM students
WHERE email IS NOT NULL;

Truy vấn này sẽ trả về tất cả các tên học sinh và email, nhưng chỉ cho những học sinh có địa chỉ email trong cơ sở dữ liệu. Nó giống như nói, "Hey cơ sở dữ liệu, hãy cho tôi tất cả các học sinh đã điền đầy đủ trường email của họ!"

Tại sao không sử dụng '!=' hoặc '<>'?

Bạn có thể tự hỏi, "Tại sao chúng ta không chỉ sử dụng email != NULL?" Đó là một câu hỏi tuyệt vời! Trong SQL, NULL đại diện cho một giá trị không rõ. Vì nó không rõ, chúng ta không thể so sánh nó với bất kỳ thứ gì - thậm chí không phải với chính nó! Nó giống như cố gắng so sánh táo với... không có gì.

Hãy xem một ví dụ:

-- Truy vấn này sẽ không hoạt động như mong đợi
SELECT name, email
FROM students
WHERE email != NULL;

-- Đây là cách đúng
SELECT name, email
FROM students
WHERE email IS NOT NULL;

Truy vấn đầu tiên sẽ thực sự không trả về kết quả nào, bất kể dữ liệu trong bảng của bạn như thế nào. Truy vấn thứ hai sẽ chính xác trả về tất cả các hàng có giá trị email.

IS NOT NULL với hàm COUNT()

Bây giờ chúng ta đã hiểu cơ bản, hãy xem IS NOT NULL có thể được sử dụng với các hàm SQL khác, như COUNT().

Đếm các giá trị không phải NULL

Hàm COUNT() được sử dụng để đếm số lượng hàng khớp với một tiêu chí cụ thể. Khi kết hợp với IS NOT NULL, nó có thể cho chúng ta biết có bao nhiêu hàng có giá trị trong một cột cụ thể.

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

Trong truy vấn này, COUNT(*) đếm tất cả các hàng, trong khi COUNT(email) chỉ đếm các hàng có giá trị email. Đây là một cách nhanh chóng để xem dữ liệu của bạn hoàn chỉnh đến mức nào!

Tính toán tỷ lệ phần trăm

Chúng ta có thể đi một bước xa hơn và tính toán tỷ lệ phần trăm học sinh đã cung cấp email:

SELECT
COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
(COUNT(email) * 100.0 / COUNT(*)) AS email_percentage
FROM students;

Truy vấn này không chỉ đếm tổng số học sinh và những học sinh có email mà còn tính toán tỷ lệ phần trăm học sinh đã cung cấp email. Nó giống như điểm danh và xác định ai đã làm bài tập về nhà!

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

Đôi khi, chúng ta cần làm sạch cơ sở dữ liệu của mình bằng cách xóa các hàng có dữ liệu bị thiếu. Đây là nơi IS NOT NULL rất hữu ích với câu lệnh DELETE.

Câu lệnh DELETE cơ bản với IS NOT NULL

Dưới đây là cách bạn có thể xóa tất cả các hàng mà một cột cụ thể là NULL:

DELETE FROM students
WHERE phone_number IS NULL;

Truy vấn này sẽ xóa tất cả các bản ghi học sinh mà không có số điện thoại. Nó giống như xóa tất cả các dòng trống trong sổ địa chỉ của bạn.

Kết hợp điều kiện

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

DELETE FROM students
WHERE graduation_year IS NULL
AND enrollment_date < '2020-01-01';

Truy vấn này xóa các bản ghi của học sinh không có năm tốt nghiệp và đã đăng ký trước năm 2020. Đây là cách làm sạch các bản ghi cũ và không đầy đủ.

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

Cuối cùng, hãy xem IS NOT NULL có thể được sử dụng với các câu lệnh UPDATE để sửa đổi dữ liệu hiện có.

Cập nhật các giá trị không phải NULL

Giả sử chúng ta muốn cập nhật tất cả các địa chỉ email không phải NULL để thành chữ thường:

UPDATE students
SET email = LOWER(email)
WHERE email IS NOT NULL;

Truy vấn này thay đổi tất cả các địa chỉ email thành chữ thường, nhưng chỉ nếu chúng không phải NULL. Nó giống như đi qua danh sách liên hệ của bạn và đảm bảo rằng tất cả các địa chỉ email đều có định dạng nhất quán.

Cập nhật có điều kiện

Chúng ta cũng có thể sử dụng IS NOT NULL trong các câu lệnh UPDATE phức tạp hơn:

UPDATE students
SET status = 'Active'
WHERE enrollment_date IS NOT NULL
AND graduation_date IS NULL;

Truy vấn này đặt trạng thái thành 'Active' cho tất cả các học sinh có ngày đăng ký nhưng không có ngày tốt nghiệp. Đây là cách tự động cập nhật trạng thái học sinh dựa trên thông tin chúng ta có.

Kết luận

Và đây bạn đã có, các bạn! Chúng ta đã cùng nhau khám phá vùng đất của IS NOT NULL, khám phá cách sử dụng nó trong SELECT, COUNT, DELETE và UPDATE. Nhớ rằng, xử lý các giá trị NULL chính xác là rất quan trọng trong quản lý cơ sở dữ liệu. Nó là sự khác biệt giữa việc nhận được kết quả chính xác và... kết quả NULL!

Dưới đây là bảng tóm tắt các phương pháp chúng ta đã xem xét:

Hoạt động Ví dụ
SELECT SELECT * FROM table WHERE column IS NOT NULL
COUNT SELECT COUNT(column) FROM table
DELETE DELETE FROM table WHERE column IS NULL
UPDATE UPDATE table SET column = value WHERE other_column IS NOT NULL

Thực hành các truy vấn này, chơi với chúng, và sớm bạn sẽ thấy rằng xử lý các giá trị NULL sẽ trở thành bản năng thứ hai. Tiếp tục mã hóa, tiếp tục học hỏi, và nhớ rằng - trong thế giới của 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