日期:2014-05-16  浏览次数:20758 次

MySQL中,列值NOT NULL,有什么用呢???
可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件:
(1)该列定义为允许NULL值
(2)在表定义中给出默认值。

我现在有一张表,表创建语句是:
CREATE TABLE `test` (
 `id` int(11) NOT NULL auto_increment,
 `name` varchar(50) collate utf8_bin NOT NULL,
 `sex` varchar(50) collate utf8_bin NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=202 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

name和sex列是NOT NULL的,而且都没有默认值。
但我用INSERT插入语句时,如果省略他们,也可以正常插入
如:INSERT INTO test(name) values('ll'); INSERT INTO test(sex) values('male');
那不就和书上说的相悖了吗?这是怎么回事呢?

谢谢!

------解决方案--------------------
no
如果一个字段中没有指定DEFAULT修饰符,MySQL会依据这个字段是NULL还是NOT NULL自动设置默认值。如果指定字段可以为NULL,则MySQL为其设置默认值为NULL。如果是NOT NULL字段,MySQL对于数值类型插入0,字符串类型插入空字符串,时间戳类型插入当前日期和时间,ENUM类型插入枚举组的第一条。