了解NULL
NULL 无值(no value),它与字段包含 0 、空字符串或仅仅包含空格不同。 空值就是在数据表中,这条记录的某个字段为Null。
一、如果一个字段下有数据为NULL,那么当以这个字段为查询条件时,获取不到NULL值的行。
请看下图:
共11条学生数据,年龄最大为25岁。其中最后一条亮亮的年龄和班级为空。当我们以stu_age为查询条件的时候,我们查不出亮亮这一行数据。如下图:
原因:
NULL 与不匹配在通过过滤选择出不具有特定值的行时,你可能希望返回具有 NULL 值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。
二、like between and in not in 对NULL值查询不起效
一个简单的例子,你可能觉得 % 通配符可以匹配任何东西,但是NULL就是一个例外。
此时笑笑的性别就是NULL ,我们使用通配符%匹配学生性别来查询学生。
记住这句话:查询运算符、like、between and、in、not in对NULL值查询不起效。
三、分组时,NULL 将作为单独一个分组返回
我们使用学生的性别进行分组。
四、聚集函数会忽略列值为 NULL 的行
数据库本来有11条数据,但使用count(stu_sex)只查出10条。原因就是有一条数据的 stu_sex 为NULL。