MySQL - IS NOT NULL 運算子

你好,有志於數據庫的愛好者們!今天,我們將要深入MySQL的奇妙世界,並探索一個非常有用的運算子,稱為IS NOT NULL。別擔心如果你是編程新手;我會一步一步地引導你走過這個旅程,就像我這些年來對無數學生所做的一樣。所以,拿起你喜歡的飲料,我們來開始吧!

MySQL - IS NOT NULL Operator

MySQL IS NOT NULL 運算子

想像你正在籌備一個生日派對,並且正在列出一個客人名單。有些客人已經確認會來,有些說他們來不了,還有一些人還沒有回應。在數據庫的世界中,我們可能會用三個值來表示這種情況:'Yes'、'No' 和 NULL(對那些還沒有回應的人)。IS NOT NULL運算子幫助我們找到所有給了我們回應的客人,無論是'Yes'還是'No'。

在MySQL中,NULL代表一個缺失或未知的值。它與空字符串或零不同;它是任何值的缺失。IS NOT NULL運算子讓我們能夠找到某個特定列有值(任何值)的行,而不是NULL。

讓我們看一個簡單的例子:

SELECT * FROM guests WHERE response IS NOT NULL;

這個查詢會回傳所有給出回應的客人,無論他們是否會來參加派對。

現在,讓我們創建一個表並親自看看這是怎麼工作的:

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;

這個查詢會回傳以下內容:

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

正如你所看到的,Charlie和Eve因為還沒有回應(NULL),所以沒有包含在結果中。

IS NOT NULL 與 COUNT() 函數

現在,讓我們假設你想要知道實際上有多少客人已經回應了。我們可以使用COUNT()函數與IS NOT NULL一起來獲得這個信息:

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

這個查詢會回傳以下內容:

responded_guests
3

這告訴我們有3位客人對我們的邀請做出了回應。挺酷的,對吧?

IS NOT NULL 與 UPDATE 說明

有時候,我們可能會根據值是否為NULL來更新我們的數據庫。例如,讓我們假設我們想將所有NULL的回應改為'Maybe':

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

SELECT * FROM guests;

在這個更新之後,我們的guests表會變成這樣:

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

IS NOT NULL 與 DELETE 說明

在某些情況下,我們可能想要刪除含有NULL值的行。例如,如果我們決定只保留給出確定回應的客人:

DELETE FROM guests
WHERE response IS NULL;

SELECT * FROM guests;

如果我們在我們之前的UPDATE說明之前運行這個,它會從我們的客人名單中移除Charlie和Eve:

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

使用客戶端程序使用 IS NOT NULL 運算子

現在,讓我們來看看如何在實際世界中使用客戶端程序使用IS NOT NULL運算子。想像你正在寫一個Python腚本來管理你的客人名單:

import mysql.connector

# 連接到數據庫
db = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="party_planner"
)

cursor = db.cursor()

# 獲取所有已回應的客人
cursor.execute("SELECT * FROM guests WHERE response IS NOT NULL")
responded_guests = cursor.fetchall()

print("已回應的客人:")
for guest in responded_guests:
print(f"- {guest[1]}: {guest[2]}")

# 計算還沒有回應的客人數量
cursor.execute("SELECT COUNT(*) FROM guests WHERE response IS NULL")
no_response_count = cursor.fetchone()[0]

print(f"\n還沒有回應的客人數量:{no_response_count}")

# 關閉連接
db.close()

這個腚本連接到你的數據庫,檢索所有已回應的客人,並打印他們的名字和回應,然後計算還有多少客人沒有回應。

這就是全部了!我們從各個角度探討了IS NOT NULL運算子。記住,在數據庫的世界中,知道你不知道的(NULL值)與知道你所知道的同樣重要。IS NOT NULL運算子是你穿越這片領土的忠實伙伴。

當我們結束時,我想到一個學生曾經告訴我,理解NULL值就像是在數據庫中終於看到了" invisible ink "。我希望這個教程能夠幫助你開發自己的" NULL vision "!持續練習,保持好奇心,並且快樂編程!

Credits: Image by storyset