【发布时间】:2013-12-22 16:08:51
【问题描述】:
我想知道这两个键的区别。
当带有not null 的唯一键限制它们在数据库中的存储方式时
当我们对这些键进行Select,Insert,Update, Delete操作时有什么区别。
【问题讨论】:
标签: sql sql-server-2008
我想知道这两个键的区别。
当带有not null 的唯一键限制它们在数据库中的存储方式时
当我们对这些键进行Select,Insert,Update, Delete操作时有什么区别。
【问题讨论】:
标签: sql sql-server-2008
主键必须是唯一且非空的,因此从这个角度来看它们是相同的。但是,一张表只能有一个主键,而您可以有多个唯一的非空键。
大多数系统还使用元数据单独标记主键,以便设计人员等识别它们。
就它们在数据库中的存储方式而言,主键和具有非空约束的唯一键有什么区别
如果两者都是CLUSTERED 或NON CLUSTERED,那么唯一的区别是大多数系统中的元数据将索引标记为PK。
当我们对这些键进行
Select,Insert,Update,Delete操作时有什么区别
无。
【讨论】:
IDENTITY每个表的列。
回答你的评论,是的!一般来说,唯一键和主键在 SQL Server 2008 中的存储方式存在巨大差异。
默认情况下(您可以更改它)将创建一个唯一键作为非聚集索引,而将创建一个 PK 作为聚集索引默认情况下(你也可以改变它)。
非集群意味着它将存储在“附加”到表的结构中并会占用磁盘空间。
聚集意味着记录实际上将按物理顺序存储,不消耗磁盘空间,这就是为什么您的表只能拥有一个聚集索引。 (如果您想知道......不,您不能在一个表中获得 2 个非集群 PK,即使它们是非集群的,PK 也是唯一的。)
【讨论】:
主键不能为空,每张表只能有一个。
唯一键可以包含空值,并且每个表可以有多个。
【讨论】:
一个。主键和唯一键都强制定义它们的列的唯一性。但默认情况下,主键在列上创建聚集索引,而唯一键默认创建非聚集索引。另一个主要区别是主键不允许 NULL,但唯一键只允许一个 NULL。
【讨论】: