CREATE TABLE `tbl` (
`a` int(20) NOT NULL,
`b` varchar(20) default NULL,
`c` varchar(19) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
insert into tbl(a) values(1);
select * from tbl;
结果:
在 MySQL 中,
为一个 NOT NULL 字段设置 NULL 值 , 它并不会出错, MySQL 会自动将 NULL值转化为该字段的默认值, 那怕是你在表定义时没有明确地为该字段设置默认值 :》一般来说MySQL会自动为你添加默认值的, 比如 为一个 NOT NULL 的 整型 赋 NULL 值, 结果是 0 CHAR 型 -> ' '空值 DATATIME -> '0000-00-00 00:00:00 ' 等等 |
也就是说,MySQL中NOT NULL并不是一个约束条件了.
如果字段设置为NULL,则插入记录时没有给予该字段的值,那么MySQL自动用Default的值,如果没有Default,则无论是该字段是什么类型该字段值NULL. 这是不是就是MySQL中NOT NULL和NULL所起到的作用,即当不为定义Default值的时候,给予的默认值的不同. |