独特和主要的关键

时间:2010-03-16 05:58:48

标签: sql mysql

将表的属性声明为UNIQUE,等同于将其声明为PRIMARY KEY吗?

非常感谢!

6 个答案:

答案 0 :(得分:14)

不。

PRIMARY KEY必须是UNIQUE,但UNIQUE键不必是主键。您可以在表格中使用多个UNIQUE键。

关键区别在于PRIMARY键不能具有NULL值,因为它们必须唯一地标识一行。 UNIQUE键可能为NULL,并且允许多个NULL值(除非您使用的是非常见​​的表引擎,如BDB)。

答案 1 :(得分:8)

不同的是: 主键默认创建聚簇索引,一个表中只能存在一个PK。主键可以覆盖多个列(复合键)

答案 2 :(得分:4)

两者不相同但相似,当列为唯一时,它具有唯一值,但它也允许该列中的一个Null值,但Primary不允许任何空值。 主键可用于其他表中的参考。

表中只能有一个主键,但多个唯一键

当您声明UNIQUE约束时,SQL Server会创建一个UNIQUE索引以加快搜索重复项的过程。在这种情况下,索引默认为NONCLUSTERED索引,因为每个表只能有一个CLUSTERED索引。

  • 每个表的UNIQUE约束数受表中索引数量的限制,即249 NONCLUSTERED索引和一个可能的CLUSTERED索引。

与PRIMARY键相反,UNIQUE约束可以接受NULL但只接受一次。如果约束是在字段组合中定义的,那么每个字段都可以接受NULL并且可以在它们上面有一些值,只要组合值是唯一的。

快乐编码!!!

答案 3 :(得分:4)

UNIQUE仍然可以为NULL。

PRIMARY KEY表示UNIQUE和NOT NULL,每个表只能有一个PRIMARY KEY。

答案 4 :(得分:1)

不..他们不等同。唯一键可能具有Null值,但不允许主键具有空值。 这是解释差异的链接 http://sqlhints.com/2013/06/02/difference-between-primary-key-and-unique-key-in-sql-server/

答案 5 :(得分:0)

不。将列设置为唯一与使其成为主键或主键的一部分非常不同。