大家都知道,mysql的字段有个属性是是否允许为NULL,我们可以设置为default null 或者not null 或者not null default ‘’
下面我列一下这三个表示方法的利弊。
1、default null
这种写法,会造成我们根据当前列比较的时候判断当前列是否是null的时候,不用使用常规的=,而是要使用
select name from student where name is null;
另外一点是,如果当前列是唯一索引,会允许多个null的值并存,这可能会造成我们的代码上的bug,这点大家一定要注意。
2、not null,这要求插入值的时候,当前类不能是null,这本身没有什么问题,但是下面的场景,就会带来大问题,尤其是新手程序员需要注意。
create table t1(
id int auto_increment primary key ,
name varchar(30) not null ) ;
-- 场景a 插入sql
insert into t1(name) values('a');
--某个需要,需要增加字段。
alter table t1 add column address varchar(30) not null;
--如果场景a忘记了修改
insert into t1(name) values('b');
--会报如下错误。
ERROR 1364 (HY000): Field 'address' doesn't have a default value
3、alter table t1 add column address varchar(30) not null default ‘’ ,这种写法是强烈推荐的 。既可以避免ERROR 1364 (HY000): Field 'address' doesn't have a default value,错误,又可以避免第一个场景下的不便。