扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: 计算机基础 > MySQL高频面试题 > 42.MySQL字段为什么要设置成not null?

首先说一点,NULL和空值是不一样的,空值是不占用空间的,而NULL是占用空间的,所以字段设为NOT NULL后仍然可以插入空值。

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

  • NULL值会影响一些函数的统计,如count,遇到NULL值,这条记录不会统计在内。
  • B树不存储NULL,所以索引用不到NULL,会造成第一点中说的统计不到的问题。
  • NOT IN子查询在有NULL值的情况下返回的结果都是空值。例如user表如下
idusername
0zhangsan
1lisi
2null
  • select * from user where username NOT IN (select username from `user` where id != 0),这条查询语句应该查到zhangsan这条数据,但是结果显示为null。
  • MySQL在进行比较的时候,NULL会参与字段的比较,因为NULL是一种比较特殊的数据类型,数据库在处理时需要进行特数处理,增加了数据库处理记录的复杂性。

点击面试手册,获取本站面试手册PDF完整版