SQL - IS NULL: 掌握处理空值的艺术

你好,有抱负的数据库爱好者们!欢迎你加入我们进入SQL的迷人世界,我们将探索NULL值的神秘领域。我是你的向导,Query教授,今天我们将揭开IS NULL操作符的秘密。所以,拿起你的虚拟记事本,让我们一起深入研究!

SQL - IS NULL

SQL IS NULL操作符:你的空值检测超级英雄

想象你在一个聚会上,试图找出谁没有带礼物。在数据库的世界里,IS NULL就像你的超级力量礼物检测器,帮助你发现那些空手而来的客人(或者在我们的例子中,空白的数据库字段)。

IS NULL操作符用于测试数据库中的空值(NULL值)。但是等等,NULL究竟是什么?

NULL不是零。它不是一个空字符串。它是任何值的缺失。把它看作是数据库中的耸肩表情?‍♂️。

这里有我们关于NULL相关操作符的快速备忘录:

操作符 描述
IS NULL 检查一个值是否为NULL
IS NOT NULL 检查一个值是否不为NULL

现在,让我们看看在不同SQL场景中如何使用这个超级英雄!

IS NULL与SELECT语句:寻找无形之物

基本用法

让我们从一个简单的例子开始。假设我们有一个名为students的表,包含student_idnameemail列。一些学生还没有提供他们的电子邮件地址。

SELECT * FROM students
WHERE email IS NULL;

这个查询将返回所有电子邮件字段为NULL的行。就像在问,“展示所有忘记写下电子邮件地址的学生!”

结合其他条件

我们也可以将IS NULL与其他条件结合使用。例如:

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

这个查询表示,“给出没有电子邮件地址且ID大于1000的学生的姓名和ID。”这就好像你是一个侦探,缩小了你的搜索范围!

IS NULL与COUNT()函数:计数空白

COUNT()函数可以是IS NULL的好伙伴。让我们看看他们如何一起工作:

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

这个查询给我们提供了三方面的信息:

  1. 学生的总数
  2. 有电子邮件地址的学生数量
  3. 没有电子邮件地址的学生数量

记住,COUNT(*)计算所有行,而COUNT(email)只计算非NULL的电子邮件值。这就好像是在计算所有聚会嘉宾,然后计算那些带有礼物的,最后通过减法找出空手而来的!

IS NULL与UPDATE语句:填补空白

有时,我们想将NULL值更新为更有意义的内容。下面是如何操作的:

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

这个查询将所有NULL的电子邮件值替换为'[email protected]'。就像给所有空手而来的聚会嘉宾一个默认的礼物!

一个更复杂的例子

假设我们想要将NULL的电子邮件地址更新为学生的名字和默认域名的组合:

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

对于具有NULL电子邮件的学生,此查询执行以下操作:

  1. 获取他们的名字
  2. 将空格替换为下划线
  3. 转换为小写
  4. 在末尾添加'@student.example.com'

因此,“John Doe”会变成“[email protected]”。这就好像为那些忘记带名牌的人创建个性化的名牌!

IS NULL与DELETE语句:移除空白

有时,我们可能想要删除具有NULL值的行。下面是如何操作的:

DELETE FROM students
WHERE email IS NULL;

这个查询会删除所有电子邮件为NULL的行。要小心使用这个操作!这就好像把所有没有带礼物的聚会嘉宾都赶出去——是不是有点太严厉了?

一种更安全的方法

我们可能想要将这些行移动到另一个表中,而不是删除它们:

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

DELETE FROM students
WHERE email IS NULL;

这种方法首先将NULL电子邮件记录移动到'incomplete_records'表中,然后从主表中删除它们。这就好像把空手而来的嘉宾移到一个单独的房间,而不是完全赶出去!

结论:拥抱空值

亲爱的学生们,以上就是我们的内容!我们已经探索了IS NULL操作符及其在SQL中的各种用途。记住,NULL值不是你的敌人——它们只是等待被正确处理的被误解的信息片段。

在你继续SQL旅程的过程中,你会发现掌握空值的处理对于维护干净准确的数据库至关重要。这就好像是一个熟练的聚会主持人,确保每个人都得到关注,即使是那些空手而来的客人!

继续练习,保持好奇心,并记住:在数据库的世界里,有时候“无”(NULL)可以意味着一切!

Credits: Image by storyset