代码编织梦想

创建表时应当设置not null,添加一个默认值0或’'去替代null。

sum(‘field’)的坑

若一列的所有值都是null,那么sum函数的结果不是0,而是null,所以可能会因为值的类型兼容问题,出现意料之外的情况。
null值会有NPE问题。

count(‘field’)的坑

有null的列,count不会+1。

where(‘field’)的坑

null是没有设置值的一种状态,并不是某个值,若用where field = null, where field = '', where field = false, where field = true,都无法匹配。
需要使用where field is null,where field <=> null来匹配。

group by(‘field’)的坑

null值会被自动归类为一类,某些场景下,可能不适用。

order by(‘field’)的坑

null值会被视为最小值,放在0的前方,某些场景下,可能不适用。

distinct(‘field’)的坑

有null的值,也会被去重,某些场景下,可能不适用。

null相关运算的坑

null值与任何数据进行四则运算或者大于小于等于不等于的运算,都返回null,某些场景下,可能不适用。

导入数据的坑

若两个MySQL环境或配置不一样,A设备导出的数据,B设备导入,可能会因为null值所在的字段缺少值从而报错。

外键的坑

在 MySQL 中,如果使用了外键约束,并且外键列允许 NULL 值,那么当引用的列中出现 NULL 值时,可能会导致一些意想不到的行为,如无法正确匹配行或者导致级联更新或删除的问题。

结果兼容性的坑

对于静态强类型语言,可能类型上会不兼容。
对于动态若类型的语言,null,0,false,‘’,都是false,可能会影响一些逻辑。

对唯一索引的影响

null值会导致数据有多个相同的null值,破坏了唯一性约束。

对索引的影响

有的说null值就不走索引,经过实测,就算全是null值,也显示的Using index。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42100387/article/details/139042419

怎么跳出mysql的10个大坑 _yypiao的博客-爱代码爱编程

转 背景 关于Group Commit网上的资料其实已经足够多了,我这里只简单的介绍一下。 众所周知,在MySQL5.6之前的版本,由于引入了Binlog/InnoDB的XA,Binlog的写入和InnoDB commit完全串行化执行,大概的执行序列如下:   [js] view plai

mysql中NULL大坑-爱代码爱编程

mysql中NULL大坑 参考网址: 建表规范 https://mp.weixin.qq.com/s?__biz=MzU4ODI1MjA3NQ==&mid=2247490967&idx=2&sn=fc92dc46ad2b6b2c2964c06f6277c4f7&chksm=fddecb53caa94245107

mysql 与null比较大小_详解数据库语言中的null值-爱代码爱编程

虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错。 Tony Hoare 在1965年发明了 null 引用, 并认为这是他犯下的“几十亿美元的错误”. 即便是50年后的今天, SQL中的 null 值还是导致许多常见错误的罪魁祸首. 我们一起来看那些最令人震惊的情况。 Null不支持

【mysql】mysql 字段为 null 的5大坑-爱代码爱编程

数据准备 建立一张表 数据如下: 1.count 数据丢失 count(*) 会统计值为 NULL 的行,而 count(列名) 不会统计此列为 NULL 值的行。 select count(*),count(n

js遇到需要正则匹配来修改img标签+清除行内样式-爱代码爱编程

方法一 var regex0 = new RegExp("(i?)(\<img)([^\>]+\>)", "gmi") //正则匹配表达式 this.newcontent = this.content.replace(regex0,"$2 style='display:block;margin: auto;width:120px;'

mysqls事物基本概念-爱代码爱编程

事务的特性(ACID): 原子性:构成事务的所有操作要么全部成功,要不全部不成功一致性:事务执行之前和执行之后,数据始终保持一致隔离性:并发执行的两个事物之间互不干扰持久性:事物对数据的更改操作会被持久化到数据库中,并且不会被回滚 事物的类型: 偏平事物:操作中最常见、最简单、主流的数据库都支持带有保存点的扁平事物:事务回滚能回滚到指定的保存点链式事

【golang】 mysql 在 go 语言驱动程序中常用参数-爱代码爱编程

文章目录 前言一、参数解释二、代码实现四、总结 前言 在 Go 语言中,我们使用数据库驱动程序来连接和操作数据库。对于 MySQL,我们通常使用 go-sql-driver/mysql 驱动程序

python学习-爱代码爱编程

核心代码 # 导入pandas库 import pandas as pd # 导入正则表达式包 import re # 指定Excel文件的路径,这个data.xlsx表为原始表,表内有40个sheet子表 file_p

mysql-爱代码爱编程

1、适合创建索引的情况 1.1、字段数值具有唯一性的限制 索引本身是具有约束作用的,比如创建唯一索引、主键索引在数据表中如果某个字段是唯一性的,可以创建唯一性索引或主键索引 在业务场景中具有唯一特性的字段,即使是

【mysql】mvcc-爱代码爱编程

MVCC 什么是MVCC快照读与当前读快照读当前读 事务隔离级别隐藏字段、Undo Log版本链MVCC实现原理之ReadView设计思路ReadView规则MVCC操作流程 举例说明在READ C