1.插入NULL不一定为NULL
NULL是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,NULL往往代表不同的含义。这是MySQL数据库的一种特性。在普通的字段中(字符型的数据),插入NULL就是NULL。但是如果将一个NULL的数据插入到TimeStamp类型的字段中,NULL就不一定为NULL。
比如,如果往TimeStamp类型的列中插入NULL值,则其代表的就是系统的当前时间。如果往auto_increment属性的列中插入NULL值的话,则系统会插入一个正整数。而如果在字符型数据的列中插入NULL的数据,则其插入的就是一个NULL。
2.NULL与空字符串‘’是不一样的类型
空字符串不占空间大小,而NULL是要占空间的,这就好比一杯真空和一杯空气的区别。
count(col)的结果会排除col为NULL的行,而不会排除空字符串。(count(*)会被优化,总是直接返回总行数的)