将NOT NULL
添加到主键字段有什么意义?主键已经非空 + 唯一。
以下是一个例子:
CREATE TABLE student (
id int(11) AUTO_INCREMENT NOT NULL,
name varchar(255),
PRIMARY KEY(id)
)
为什么不这样定义它:
CREATE TABLE student (
id int(11) AUTO_INCREMENT,
name varchar(255),
PRIMARY KEY(id)
)
答案 0 :(得分:14)
他们是一样的。主键自动NOT NULL
。
答案 1 :(得分:5)
你在问,为什么人们在没必要的时候会加入NOT NULL呢?我想,只是因为这是好的风格。并向读者明确说明。
答案 2 :(得分:3)
NULL
不等同于NULL
(因为NULL
表示未知或缺席值),因此您将被允许拥有多个NULL
的记录id,即使定义了主键/唯一约束,因此使用NOT NULL
。如果MySql甚至允许您在可空字段上定义主键,那就是这样。
此外,由于主键通常用于其他表中的外键,因此具有一个或多个NULL
值是没有意义的。