字段为什么要设置成not null?

本文探讨了在数据库设计中使用NOTNULL约束的原因,包括NULL值对统计函数的影响、B树对NULL的处理以及SELECT查询中的NULL行为。重点讲解了NULL在比较和函数计算中的特性,以及如何避免在查询中出现意外的NULL结果。
摘要由CSDN通过智能技术生成

首先说一点, null和空值不一样,空值不占用空间,null占用空间 ,所以字段设置成not null之后仍然可以插入空值。

字段设置成not null的原因有以下几点:

1. NULL值会影响一些函数的计算 ,如count函数遇到NULL值,这条记录不会统计在内。

2. NOT IN在有NULL值的情况下返回的结果都是空值

3. B树不存储NULL,所以索引用不到NULL ,会造成第一点钟说的统计不到的情况。

select * from `user` where username NOT IN (select username from `user` where id != 0),这条查询语句应该查到zhangsan这条数据,但是结果显示为null。

MySQL在进行比较的时候,NULL会参与字段的比较,因为NULL是一种比较特殊的数据类型,数据库在处理时需要进行特数处理,增加了数据库处理记录的复杂性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值