我对SQL Server中唯一键和主键以及唯一键约束和主键约束之间的区别感到困惑。
我可以在表格中定义多个主键吗?
同样,我没有得到如何在我的表中设置唯一键以及它的实际用途。第二件事,我在互联网上找到了这样的声明
PRIMARY KEY约束自动具有UNIQUE约束 在它上面定义。
请注意,每个表可以有多个UNIQUE约束,但只有一个 每个表的PRIMARY KEY约束。
这是否意味着当我创建主键时,它会自动定义唯一键,即我只能在其中插入1个空值?
答案 0 :(得分:4)
您的主键始终是唯一的。您可以添加其他密钥,可能也可能不是唯一的。如果我没有错,主键将决定记录实际存储在磁盘上的方式。
答案 1 :(得分:3)
表上不能有多个主键,但是您可以在表上拥有尽可能多的(在合理的技术限制范围内)唯一约束。
主键不能包含空值,唯一约束确实允许空值发生,但在这种情况下将NULL视为值(因此对于单个列约束,只能出现一个空值)。
主键和唯一约束都可以是外键约束的引用键。
许多关系纯粹主义者认为在SQL中引入“主键”是一个错误 - 没有任何理由选择一个键比任何其他键“更好” - 如果表中有真正的多个键。您可以完全放弃主键并仅使用UNIQUE约束,并平等对待所有键。
答案 2 :(得分:1)
确定:
另一方面:
主键是一件非常特别的事情 - 它定义了清晰唯一地标识每一行的方法。因此必须是唯一的,并且不能为NULL。
唯一索引就是这样 - 一种确保某些东西(一列,几列toegther)是唯一的机制。您可以在表格上拥有多个约束。
每个唯一索引可能是您的主键 - 它是所谓的候选键。但是只有其中一个可以被挑选并选择实际上是你的主键。