国外做网站,百度竞价sem,网站提示代码,wordpress 代码臃肿NULL值是我们在开发过程中的老朋友了#xff0c;但是这个老朋友在MySQL中有很多坑#xff0c;我通过这篇文章来总结分享一下#xff0c;欢迎大家在评论区分享你的看法和踩坑经历。
1、NULL不等于NULL
在MySQL中#xff0c;执行以下SQL会返回NULL 假如t表有以下数据#…NULL值是我们在开发过程中的老朋友了但是这个老朋友在MySQL中有很多坑我通过这篇文章来总结分享一下欢迎大家在评论区分享你的看法和踩坑经历。
1、NULL不等于NULL
在MySQL中执行以下SQL会返回NULL 假如t表有以下数据其中有一条a为null的记录 如果执行以下SQL将会返回空集合明明有a为null的记录但却没查到好坑 假如我们认为NULL等于NULL那么这就会导致误解从而导致业务逻辑出现问题。
大家觉得NULL应不应该等于NULL呢
事实上我们得通过is null来判断某个值是不是null可为啥要这么设计呢 2、NULL与任何值比较都为NULL
实际上NULL与任何值比较都为NULL 这里的重点是并不是返回的0而是null既然不相等为什么不返回0呢不是1代表相等0代表不相等吗好坑
3、NULL导致唯一索引不唯一
我们给a、b两个字段创建唯一联合索引
alter table t add unique idx_ab(a,b);由于是唯一索引所以第二次插入(1,1)时会报错
insert into t(a,b) values(1,1);
insert into t(a,b) values(1,1);但如果是插入(2,null)则不会报错
insert into t(a,b) values(2,null);
insert into t(a,b) values(2,null);最终表中的结果为 不是说ab是唯一索引吗怎么还能有重复记录好坑
4、NULL对排序的影响
当前表的数据为 我们对a字段先进行升序排序 嗯…NULL排在了最前面两个NULL也按id进行了升序排序这倒是能理解那反过来进行降序排序呢 嗯…NULL排在了最后面这倒没问题可是两个NULL的记录能不能也按id进行降序排序呢你觉得是坑吗
5、聚合函数不会统计NULL值
对于上表总共有8条记录其中a为null的有两条执行count语句以下结果大家应该能理解count(a)时不会统计a为null的记录。 但是如果对a字段执行求平均数那么结果为4.1667 计算方法为86532125然后25/64.1667关键是到底应该是25/6还是25/8呢你们觉得呢
6、NULL导致函数结果为NULL
有时我们可能会在SQL进行字符串连接比如执行 为什么要返回null呢返回’daduduzhouyu’应该更好吧
欢迎大家在评论区聊聊你对这六大坑的看法或者自己的踩坑经历谢谢大家的阅读记得点赞、关注哦。
我的所有文章汇总在了我的公众号IT周瑜欢迎大家关注同时公众号内还有我整理的100道面试真题有需要的兄弟关注后即可领取。