我对创建表格有疑问。
假设我想创建带有 sss 列的表 xxx。这是什么意思NOT NULL DEFAULT '0'
?
另一列有DEFAULT NULL
CREATE TABLE `xxx` (
`sss` smallint(6) NOT NULL DEFAULT '0',
`mmm` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我什么时候用Engine
?
谢谢
NOT NULL 表示该列必须有一个值。
DEFAULT '0' 表示除非另有说明,否则该列的默认值为 '0'。
列定义的NOT NULL
语法是一个约束,它不允许将 NULL 值存储在列中。尝试插入 NULL 值将引发错误。
当插入没有为列提供值时,该DEFAULT
子句指定将存储在列中的值。从列规范中省略时,默认值为 NULL。
在问题中的表定义的情况下,这样的语句:
INSERT INTO xxx (mmm) VALUES ('2013-08-22');
将插入一个值为 0 的行分配给 sss 列,相当于这个语句:
INSERT INTO xxx (sss, mmm) VALUES (0, '2013-08-22');
同样,如果没有为 mmm 提供任何值,它将被设置为 NULL。