WHERE/ON/HAVING IF/CASE WHEN)的逻辑结果状态有三种:true、false、unknowntrue(当且仅当条件运算结果为true,其他都不行),则可以选择这一条数据null(unknown)与任何一个value进行条件运算,都会返回unknown,而不会返回true,因此如下几种 null 相关的条件运算都不会把对应的那行数据筛选出来
unknown比unknown

unknown比value

加减乘除



函数随便放在哪个位置,这个函数的作用就是如果null,则取一个预定值


SELECT name FROM customer WHERE referee_id <> 2 OR referee_id IS NULL;
SELECT name FROM customer WHERE referee_id != 2 OR referee_id IS NULL;
下面这是一个补集思想的写法
select name from customer
where id not in (select id from customer where referee_id=2)
这样仍然筛选不出来referee_id 为 NULL对应的数据
定义表结构时, 尽量使用 NOT NULL 约束

例如有如下语句
SELECT stu_name , SUM(phone) FROM students GROUP BY stu_name;
其中stu_name有的值为null
那么

SELECT * FROM students ORDER BY stu_name;
无论正序倒序,所有NULL属性的值排在一起

IS NULL、IS NOT NULL、isnull()函数IS TRUE、IS NOT TRUE来避免unknown的情况