MySQL - Operator IS NOT NULL

Xin chào các bạn yêu thích cơ sở dữ liệu! Hôm nay, chúng ta sẽ cùng nhau lặn vào thế giới kỳ diệu của MySQL và khám phá một operatord小小 gọi là IS NOT NULL. Đừng lo lắng nếu bạn mới bắt đầu học lập trình; tôi sẽ hướng dẫn bạn từng bước trong hành trình này, giống như tôi đã làm cho hàng trăm học sinh trong những năm dạy học của mình. Vậy, hãy lấy một ly đồ uống yêu thích của bạn và cùng bắt đầu nhé!

MySQL - IS NOT NULL Operator

Operator IS NOT NULL trong MySQL

Hãy tưởng tượng bạn đang tổ chức một bữa tiệc sinh nhật và bạn đang lập danh sách khách. Một số khách đã xác nhận sẽ đến, một số khác đã nói rằng họ không thể tham gia và những người còn lại chưa phản hồi. Trong thế giới cơ sở dữ liệu, chúng ta có thể đại diện cho tình huống này bằng ba giá trị: 'Yes', 'No' và NULL (cho những người chưa phản hồi). Operator IS NOT NULL giúp chúng ta tìm thấy tất cả các khách đã cho chúng ta phản hồi, dù đó là 'Yes' hay 'No'.

Trong MySQL, NULL đại diện cho một giá trị thiếu hoặc không rõ. Nó không giống như một chuỗi trống hoặc số không; nó là sự vắng mặt của bất kỳ giá trị nào. Operator IS NOT NULL cho phép chúng ta tìm thấy các hàng trong đó một cột cụ thể có giá trị (bất kỳ giá trị nào) thay vì NULL.

Hãy xem một ví dụ đơn giản:

SELECT * FROM guests WHERE response IS NOT NULL;

Truy vấn này sẽ trả về tất cả các khách đã cho phản hồi, dù họ có đến dự tiệc hay không.

Bây giờ, hãy tạo một bảng và xem điều này trong thực tế:

CREATE TABLE guests (
id INT PRIMARY KEY,
name VARCHAR(50),
response VARCHAR(3)
);

INSERT INTO guests VALUES
(1, 'Alice', 'Yes'),
(2, 'Bob', 'No'),
(3, 'Charlie', NULL),
(4, 'David', 'Yes'),
(5, 'Eve', NULL);

SELECT * FROM guests WHERE response IS NOT NULL;

Truy vấn này sẽ trả về:

id name response
1 Alice Yes
2 Bob No
4 David Yes

Như bạn có thể thấy, Charlie và Eve, những người chưa phản hồi (NULL), không được bao gồm trong kết quả.

Sử dụng IS NOT NULL với hàm COUNT()

Bây giờ, hãy giả sử bạn muốn biết có bao nhiêu khách thực sự đã phản hồi. Chúng ta có thể sử dụng hàm COUNT() cùng với IS NOT NULL để lấy thông tin này:

SELECT COUNT(*) AS responded_guests
FROM guests
WHERE response IS NOT NULL;

Truy vấn này sẽ trả về:

responded_guests
3

Điều này cho chúng ta biết rằng có 3 khách đã phản hồi lời mời của chúng ta. Thật tuyệt vời phải không?

Sử dụng IS NOT 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 dựa trên việc giá trị có phải NULL hay không. Ví dụ, hãy giả sử chúng ta muốn thay đổi tất cả các phản hồi NULL thành 'Maybe':

UPDATE guests
SET response = 'Maybe'
WHERE response IS NULL;

SELECT * FROM guests;

Sau khi cập nhật, bảng guests của chúng ta sẽ trông như sau:

id name response
1 Alice Yes
2 Bob No
3 Charlie Maybe
4 David Yes
5 Eve Maybe

Sử dụng IS NOT 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 hàng có giá trị NULL. Ví dụ, nếu chúng ta quyết định chỉ giữ lại những khách đã cho phản hồi rõ ràng:

DELETE FROM guests
WHERE response IS NULL;

SELECT * FROM guests;

Nếu chúng ta chạy lệnh này trước câu lệnh UPDATE trước đó, nó sẽ xóa Charlie và Eve khỏi danh sách khách của chúng ta:

id name response
1 Alice Yes
2 Bob No
4 David Yes

Sử dụng Operator IS NOT NULL trong Chương trình Khách

Bây giờ, hãy nói về cách bạn có thể sử dụng operator IS NOT NULL trong một tình huống thực tế bằng cách sử dụng một chương trình khách. Hãy tưởng tượng bạn đang viết một script Python để quản lý danh sách khách của bạn:

import mysql.connector

# Kết nối đến cơ sở dữ liệu
db = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="party_planner"
)

cursor = db.cursor()

# Lấy tất cả các khách đã phản hồi
cursor.execute("SELECT * FROM guests WHERE response IS NOT NULL")
responded_guests = cursor.fetchall()

print("Khách đã phản hồi:")
for guest in responded_guests:
print(f"- {guest[1]}: {guest[2]}")

# Đếm số khách chưa phản hồi
cursor.execute("SELECT COUNT(*) FROM guests WHERE response IS NULL")
no_response_count = cursor.fetchone()[0]

print(f"\nSố khách chưa phản hồi: {no_response_count}")

# Đóng kết nối
db.close()

Script này kết nối đến cơ sở dữ liệu, lấy tất cả các khách đã phản hồi, in tên và phản hồi của họ, và sau đó đếm số khách chưa phản hồi.

Và thế là xong! Chúng ta đã khám phá operator IS NOT NULL từ nhiều góc độ khác nhau. Nhớ rằng, trong thế giới cơ sở dữ liệu, việc biết những gì bạn không biết (giá trị NULL) có thể quan trọng như việc biết những gì bạn biết. Operator IS NOT NULL là người bạn trung thành của bạn trong việc điều hướng qua địa hình này.

Khi chúng ta kết thúc, tôi nhớ lại một học sinh đã từng nói với tôi rằng việc hiểu giá trị NULL giống như cuối cùng đã thấy 'mực隐形' trong cơ sở dữ liệu. Tôi hy vọng rằng hướng dẫn này đã giúp bạn phát triển 'thị lực NULL' của riêng bạn! Hãy tiếp tục thực hành, giữ vững sự tò mò và chúc bạn lập trình vui vẻ!

Credits: Image by storyset