你知道数据库的默认值 吗?
当你建表的时候 , 一般会用下面的一种
create table test(
url varchar(11)
) engine=myisam default charset=gbk;
create table test(
url varchar(11) not null default ‘’
) engine=myisam default charset=gbk;
第一种情况,insert时如果没有给定一个url 值,则数据库会写入一个NULL
每二种情况,insert时如果没有给定一个url 值,则数据库会写入一个空值
新手会比较晕,倒底用哪种,其实两种都是可以用的。但我比较常用每二种。
今天在公司遇见一个表是第一种情况,才发现有多变态。
select * from test;会读出所有的值
select * from test where url='abc';会读出所有值为abc的值
select * from test where url<>'abc'; 却读不出任何值,而数据库其实有很多为NULL的记录。(NULL当然不等于abc)
select * from test where url is null;读出所有的值为NULL的值
可能你认为上面也没有什么问题。
但当有一个开发人员在url字段手动赋了一个0值。另个一个开发人员用了url的默认值NULL时,你再想检索信息会变
得比较麻烦。