mysql中空值和null值的区别及处理方法总结

一直对空值和null值的概念理解不清晰,所以结合资料以及自己的理解对他们的区别和处理方式进行总结。

首先就是在概念上的不同:

1、空值不占空间

2、null值占空间。

打个比喻就是空值表示一个杯子是真空状态,什么都没有,而null值是杯子中有空气。接下就建立一个测试表比较它们之间的区别:


mysql中空值和null值的区别及处理方法总结_第1张图片

向test表中插入一行数据如下


发现报错,colA的值不能是null值。

再插入一条数据,

mysql中空值和null值的区别及处理方法总结_第2张图片

这个时候发现向colB一列插入null成功。

再插入二列数据

mysql中空值和null值的区别及处理方法总结_第3张图片

发现向colA一列插入空值成功,而colB列既可以插入空值,也可以插入NULL值。总结一下 ,定义为NOT NULL的字段只能插入空值,不能插入null值,而NULL字段可以插入空值,也可以插入null值。

接下来再插入一组不含空值和null的数据,

mysql中空值和null值的区别及处理方法总结_第4张图片

现在表一共有三列,现在我分别用 is not null 和 <> 检索表中的数据


 mysql中空值和null值的区别及处理方法总结_第5张图片

mysql中空值和null值的区别及处理方法总结_第6张图片


mysql中空值和null值的区别及处理方法总结_第7张图片

mysql中空值和null值的区别及处理方法总结_第8张图片

可以发现 is not null 只会过滤为null值的列,而<>会同时过滤空值和null值,所以要根据实际情况选择过滤方式。另外,判断null值只能用 is null 或 is not null ,不能用 = 或 <>。


注意事项: 

1:在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。 

mysql中空值和null值的区别及处理方法总结_第9张图片

2: 判断NULL 用IS NULL 或者 is not null,SQL 语句函数中可以使用ifnull()函数来进行处理,判断空字符用 =”或者 <>”来进行处理 
3: 对于MySQL特殊的注意事项,对于timestamp数据类型,如果往这个数据类型插入的列插入NULL值,则出现的值是当前系统时间。插入空值,则会出现 ‘0000-00-00 00:00:00’ 

4:对于空值的判断到底是使用is null 还是 =”要根据实际业务来进行区分。

5、当使用ORDER BY时,首先呈现NULL值。如果你用DESC以降序排序,NULL值最后显示。当使用GROUP BY时,所有的NULL值被认为是相等的,故只显示一行。

mysql中空值和null值的区别及处理方法总结_第10张图片

mysql中空值和null值的区别及处理方法总结_第11张图片







你可能感兴趣的:(mysql中空值和null值的区别及处理方法总结)