数据库 / 11 SQL NULL

SQL NULL

1. 定义

维基百科:空值(null 或 NULL)是结构化查询语言中使用的特殊标记,是对属性未知或缺失的一种标识。

慕课解释:空值常用于表示某个字段为空;一般地,如果某个字段可以为空,该字段默认为NULL

2. 前言

本小节,我们将一起学习 SQL NULL

NULL 是 SQL 中一个颇为特殊的值,它是所有可以为空字段的默认值,它只能由一个运算符 IS 来比较。

3. 介绍

NULL 常出现在以下两种情况:

  • 如字段是可以为空,且未被插入和更新,则该字段默认为 NULL。
  • 显式的设置字段为 NULL。

3.1 实例

我们以一个例子来说明 NULL:

新建imooc_user表,并向其中插入一些数据,如下:

DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
  username varchar(20),
  age int
);
INSERT INTO imooc_user(username) VALUES('jerry');
INSERT INTO imooc_user(username,age) 
VALUES('pedro', 23), ('mike', NULL);

操作成功后结果如下:

+----------+--------+
| username | age    |
+----------+--------+
| jerry    | <null> |
| pedro    | 23     |
| mike     | <null> |
+----------+--------+

从结果中可以得到:

  • jerry 在插入时,并未显式指定 age 的值,插入后 age 值为NULL。
  • mike 在插入时,显式的指定 age 值为NULL,插入后 age 值也为NULL。

4. NULL比较

NULL 比较特殊,无法跟其他值一样通过 =、> 等运算符进行比较;NULL 必须使用ISIS NOT进行比较。

IS NULL表示字段为空。

IS NOT NULL表示字段非空。

4.1 例1 查询 age 非空

请书写 SQL 语句,查询imooc_user表中age字段非空的用户名。

分析:

使用 Select 搭配 Where,且查询条件为 age 非空,即age IS NOT NULL

语句:

整理可得语句如下:

SELECT username FROM imooc_user WHERE age IS NOT NULL;

结果如下:

+----------+
| username |
+----------+
| pedro    |
+----------+

4.2 例2 查询 age 为空

请书写 SQL 语句,查询imooc_user表中age字段为空的用户名。

分析:

使用 Select 搭配 Where,且查询条件为 age 为空,即age IS NULL

语句:

整理可得语句如下:

SELECT username FROM imooc_user WHERE age IS NULL;

结果如下:

+----------+
| username |
+----------+
| jerry    |
| mike     |
+----------+

5. 小结

  • NULL与其它值不同,因此处理方式也不同,需要搭配IS使用。
  • NULL与0值也不是等价的,它们无法比较。