1. 为什么NULL如此惹人讨厌
- 在进行SQL编码时,必须考虑违反人类直觉的三指逻辑
- 在指定 IS NULL 不会用到索引,因而SQL语句会执行性能低下
- 如果四则运算以及SQL函数的参数中包含NULL,会引起“NULL的传播”
- 在接受SQL查询的宿主语言中,NUL的处理方法没有统一标准
- 与一般的列的值不同,NULL是通过在数据行的某处加上多余的bit来实现的
2. 并不能完全消除NULL
无法消除NULL的原因是他扎根在关系数据库的底层,仅仅靠在表中所以的列加上NOT NULL的约束是不够的。因为即使这样做,在使用外连接,ROLLUP的GROUP BY时,还是很容易引入NULL,因此我们能做的最多的是尽量避免NULL的产生
- 编号:使用异常编号
- 名字:使用“无名氏”
- 数值:用0代替
- 日期:用最大值或最小值代替
- 首先分析能不能设置默认值
- 仅在无论如何都无法设置默认值时允许使用NULL