1. 表达含义
在mysql中
空值:表示一个空字符或零长度的字符串,可以使用空引号 '' 来表示,是已被定义的值;
NULL值:NULL表示缺少一个已知或适当的值,是未被定义的值;。
2. 比较运算
空值:"="或者"<"、">" 、 "<>" 等
NULL值:IS NULL 、IS NOT NULL
假设t表中所有的数据是一个集合C,那么,集合C = 已被定义值的数据 + 未被定义值的数据
已被定义值的数据 = 值长度>0的数据 + 空值数据
未被定义值的数据 = NULL值数据
使用"="或者"<"、">" 、 "<>" 等比较运算符时只能对‘已被定义的数据’进行筛选,
也就是结果集中都不包含NULL值数据
使用IS NULL 、IS NOT NULL 时所有数据进行筛选,IS NULL的结果集是 NULL值数据,
IS NOT NULL的结果集是 已被定义的数据,即除了NULL值之外的数据
3. COUNT函数
select COUNT(1) from t_a ; -- 输出所有行数
select COUNT(*) from t_a ; -- 输出所有行数
select COUNT(name) from t_a ; -- 输出所有name 列值不为NULL的行数,包含空值
4. ORDER BY
在使用 ORDER BY 进行排序时 升序排序:NULL 值在空值之前,空值在其他值之前,即 NULL 值、空值、其他值; 降序排序则反之。
5. NULL 值与任何其他值进行比较
NULL 值与任何其他值进行比较时都不会为真,或者说NULL 值不能任何其他值进行比较,
即使是 NULL 与 NULL 进行比较也是如此。
select 1 <> 1; -- 0
select 1 <> ''; -- 1
select 1 = NULL; -- NULL
select 1 <> NULL; -- NULL
select NULL = NULL; -- NULL
select NULL <> NULL; -- NULL
6. N/A 与 NULL
N/A就是Empty Set,是指当查询结果为空时,MySQL返回的结果集。
NULL是指某个字段没有被定义值,两者没有直接关系。