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(), age int);INSERT INTO imooc_user(username) VALUES('jerry');INSERT INTO imooc_user(username,age) VALUES('pedro', ), ('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
值也不是等价的,它们无法比较。