null 相关细节的理解
数据表存储数据的方式中,当数据不完整的时候,可以使用空值(null) 表示缺失的或者未知的值,在 sql 中使用关键字 NULL 表示空值。可以理解成 把空值看作缺失值的记号或标记,而不是值。
原始数据
原始数据为包含一个字段 name 的 student 表,数据如下:
1.空值的检测
空值彼此既不是相等,也不是不相等。不能确定一个空值和另一个值(包括另一个空值)是否匹配。也就是说空值与其他任何值的相等或不相等既不是 true 也不是 false,而是 unkown。
简而言之,空值不能使用 = 或者 != 进行比较,而是使用 IS NULL 和 IS NOT NULL。 注意:不能把关键字 NULL 放在引号之中,DBMS将会把它视为字符串 ‘NULL’ ,而不是空值。
SELECT * FROM `student` WHERE name = NULL;
SELECT * FROM `student` WHERE name IS NULL;
在这里会存在一个容易犯错的地方,例如,求除开tom之外表中所有姓名的需求。
需求理解:除去所有tom,则只要判断 name <> "tom" 即可
SELECT * FROM `student`