【发布时间】:2015-11-30 22:42:10
【问题描述】:
我正在做一个 Sql 作业,我需要在其中创建几个表。作业要求:
确保为每个表的 PK 定义 NOT NULL 约束
我不明白。当我们定义一个key为Primary Key的时候,为什么要和它分开写NOT NULL呢?将键定义为PRIMARY KEY 本身不是意味着不为空且唯一吗?
请解释一下!
编辑(从下方复制):
CREATE TABLE Faculty(
FacNo char(11) not null,
FacFirstName varchar(30) not null,
FacLastName varchar(30) not null,
FacCity varchar(30) not null,
FacState char(2) not null,
FacZipCode char(10) not null,
FacRank char(4),
FacHireDate date,
FacSalary decimal(10,2),
FacSupervisor char(11),
FacDept char(6),
CONSTRAINT FacultyPK PRIMARY KEY (FacNo));
这是正确的吗? FACNO 列不为空,而且它也是主键。
【问题讨论】:
-
PK 总是 NOT NULL(并且是唯一的)。
-
PRIMARY KEY 只是 UNIQUE NOT NULL 的简写。
-
@jarlh 那么我们可以在主键中有一个空值吗?这就是作业有这个要求的原因?
-
不,主键中不能有 NULL !!!
-
我认为您的讲师要求提供与供应商无关的 sql,可能是其中的一个子集。出于教学目的,他们可能希望引出他们认为特别重要的方面。从技术上讲,唯一性约束不是必需的,您只需确保 pk 列不为空且唯一(通过您认为合适的任何方式)。