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值就像是在数据库中看到了“隐形墨水”。我希望这个教程帮助你开发了属于自己的“NULL视野”!继续练习,保持好奇心,快乐编码!

Credits: Image by storyset