从实质上区分:
1、空值不占空间
2、null值占空间
浅显的讲:
空值就像是一个真空转态杯子,什么都没有,而null值就是一个装满氛围的杯子,虽然看起来都是一样的,然则有着实质的区分。
(引荐课程:MySQL教程)
例子:
建立一个test表,colA是不能够寄存null值的,colB是能寄存null值的。
CREATE TABLE `test` ( `colA` varchar(255) NOT NULL, `colB` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插进去一个null值尝尝,会发作什么情况?
INSERT INTO `test`(`colA`, `colB`) VALUES (NULL, NULL);
//涌现报错,原因是colA是不能插进去null值。
那末假如两个字段同时插进去空值,会怎样。
INSERT INTO `test`(`colA`, `colB`) VALUES ('', '');
插进去胜利,申明字段纵然设置为null值的时刻,是能够插进去空值的
---------------------------------------------------------------查询---------------------------------------------------------
如今内外有三条数据
接下来我们运用 is not null 和 <> 检索数据内外的数据
1、运用IS NOT NULL 的查询
1 SELECT * FROM `test` WHERE colA IS NOT NULL
1 SELECT * FROM `test` WHERE colB IS NOT NULL
结论:运用 IS NOT NULL 查询不会过滤空值,然则会过滤掉NULL。
2、运用 <> 的查询
1 SELECT * FROM `test` WHERE colA <> '';
1 SELECT * FROM `test` WHERE colA <> '';
结论:运用 <> 会过滤掉NULL和空值。
3、运用 count 查询
1 SELECT COUNT(colA) FROM `test`;
1 SELECT COUNT(colB) FROM `test`;
结论:运用 count 会过滤掉 NULL 值,然则不会过滤掉空值。
总结
1、空值不占空间,NULL值占空间(占用一个字节)。
2、当字段不为NULL时,也能够插进去空值。
3、当运用 IS NOT NULL 或许 IS NULL 时,只能查出字段中没有不为NULL的或许为 NULL 的,不能查出空值。
4、运用 <> 查询时,会挑选掉空值和NULL值。
5、运用 count 统计时会过滤掉 NULL 值,然则不会过滤掉空值。
以上就是MySQL的空值和NULL有什么区分?(附示例)的细致内容,更多请关注ki4网别的相干文章!