SQL进阶教程——消灭NULL委员会(2-9)

1. 为什么NULL如此惹人讨厌

  1. 在进行SQL编码时,必须考虑违反人类直觉的三指逻辑
  2. 在指定 IS NULL 不会用到索引,因而SQL语句会执行性能低下
  3. 如果四则运算以及SQL函数的参数中包含NULL,会引起“NULL的传播”
  4. 在接受SQL查询的宿主语言中,NUL的处理方法没有统一标准
  5. 与一般的列的值不同,NULL是通过在数据行的某处加上多余的bit来实现的

2. 并不能完全消除NULL

无法消除NULL的原因是他扎根在关系数据库的底层,仅仅靠在表中所以的列加上NOT NULL的约束是不够的。因为即使这样做,在使用外连接,ROLLUP的GROUP BY时,还是很容易引入NULL,因此我们能做的最多的是尽量避免NULL的产生

  • 编号:使用异常编号
  • 名字:使用“无名氏”
  • 数值:用0代替
  • 日期:用最大值或最小值代替
  1. 首先分析能不能设置默认值
  2. 仅在无论如何都无法设置默认值时允许使用NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值