具有'not null'约束的唯一键与主键之间有什么区别?

Bha*_*iya 10 sql sql-server-2008

我想知道这两个关键的区别.

当Unique键具有not null约束时,它们如何存储在数据库中

当我们Select,Insert,Update, Delete对这些键进行操作时会有什么不同.

D S*_*ley 18

主键必须是唯一且非空的,因此从这个角度来看它们是相同的.但是,表只能有一个主键,而您可以有多个唯一的非空键.

大多数系统还使用元数据分别标记主键,以便设计师可以识别它们等.

主键和唯一键之间的区别在于它们在数据库中的存储方式没有空约束

如果两者都是CLUSTERED或者NON CLUSTERED那么唯一的区别是大多数系统中的元数据将索引标记为PK.

有什么区别在那里,当我们做Select,Insert,Update,Delete这些按键操作

没有.


jea*_*ean 7

为了回答你的评论,是的!通常,SQL Server 2008中存储唯一键和主键的方式存在巨大差异.

默认情况下,一个唯一键(您可以更改它)将被创建为非聚集索引,并且默认情况下将PK创建为聚簇索引(您也可以更改它).

非群集意味着它将存储在"附加"到表的结构中,并将消耗磁盘空间.

群集意味着记录将实际存储在该物理顺序中,不占用磁盘空间,这就是为什么您的表只能拥有一个聚簇索引的原因.(如果你想知道......不,你不能在表中获得2个非聚集PK,即使它们是非聚集的,PK也是唯一的.)