在MySQL中向主键字段添加NOT NULL有什么意义?

时间:2010-08-17 13:47:20

标签: mysql database primary-key

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)
)

3 个答案:

答案 0 :(得分:14)

他们是一样的。主键自动NOT NULL

答案 1 :(得分:5)

你在问,为什么人们在没必要的时候会加入NOT NULL呢?我想,只是因为这是好的风格。并向读者明确说明。

答案 2 :(得分:3)

NULL不等同于NULL(因为NULL表示未知或缺席值),因此您将被允许拥有多个NULL的记录id,即使定义了主键/唯一约束,因此使用NOT NULL。如果MySql甚至允许您在可空字段上定义主键,那就是这样。

此外,由于主键通常用于其他表中的外键,因此具有一个或多个NULL值是没有意义的。