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 必须使用IS
和IS 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
值也不是等价的,它们无法比较。