0

我对创建表格有疑问。

假设我想创建带有 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

谢谢

4

2 回答 2

4

NOT NULL 表示该列必须有一个值。

DEFAULT '0' 表示除非另有说明,否则该列的默认值为 '0'。

于 2013-08-22T15:11:11.940 回答
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。

于 2013-08-22T15:38:09.553 回答