作者:blue一个人的秋天_854 | 来源:互联网 | 2022-11-18 18:32
我正在阅读有关主键和许多教程,技术博客等的内容,我发现主键可以为空的答案.我认为这是完全错误的,因为我能够在列中插入空值.我想只有当列被声明为非null时,主键才能具有非null值.但同样,这不是主键的功能.
我的另一个问题是,为什么我们有一个主键的概念,因为我发现主键和唯一键之间只有一个区别是"主键只能在一列上声明,而唯一键可以在多列上声明".所以我的理解是,如果我们没有任何其他差异,为什么我们也不能将主键声明为唯一键.
1> PSK..:
我认为只有当列被声明为非null时,主键才能具有非空值.但是,这不是主键的功能.
主键不能具有空值.根据主键的定义,它是UNIQUE和NOT NULL.
我的另一个问题是,为什么我们有一个主键的概念,因为我发现主键和唯一键之间只有一个区别是"主键只能在一列上声明,而唯一键可以在多列上声明"
这是完全错误的.您也可以在多个列上创建主键,主键和唯一键之间的区别是主键不为空,而唯一键可以具有空值.
主键的主要用途是识别行的唯一性,其中唯一键是防止重复,以下是主键和唯一键之间的主要区别.
首要的关键 :
表只能有一个主键.
主键由一列或多列组成.
主键强制执行表的实体完整性.
定义的所有列必须定义为NOT NULL
.
主键唯一标识一行.
CLUSTERED
默认情况下,主键会生成唯一索引.
独特的关键:
表上可以定义多个唯一键.
NONCLUSTERED
默认情况下,唯一键会生成唯一索引.
一列或多列构成唯一键.
列可以是NULL
,但NULL
允许每列一列.
a可以引用唯一约束Foreign Key Constraint
.
我建议你阅读这个主键和唯一键