探究

Mysql探究之null与not null

和自甴很熟 提交于 2019-11-26 14:29:43
相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 1、我字段类型是not null,为什么我可以插入空值 2、为毛not null的效率比null高 3、判断字段不为空的时候,到底要 select * from table where column <> '' 还是要用 select * from table where column is not null 呢。 带着上面几个疑问,我们来深入研究一下null 和 not null 到底有什么不一样。 首先,我们要搞清楚“空值” 和 “NULL” 的概念: 1、空值是不占用空间的 2、mysql中的NULL其实是占用空间的 ,下面是来自于MYSQL官方的解释 “NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.” 打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。 搞清楚“空值”和“NULL”的概念之后,问题基本就明了了