关于MYSQL的字段默认NULL值

你知道数据库的默认值 吗?

当你建表的时候 , 一般会用下面的一种

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时,你再想检索信息会变

得比较麻烦。

 

上一篇: lParam 和 WParam   下一篇: 关于UCHOME二次开发

提交疑问

回顶部