本篇文章给大家带来的内容是关于MySQL的空值和NULL有什么区别?(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
从本质上区别:
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 的查询
芦笋演示
一键出成片的录屏演示软件,专为制作产品演示、教学课程和使用教程而设计。
34 查看详情
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有什么区别?(附示例)的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/376606.html
微信扫一扫
支付宝扫一扫