我使用的是MySQL数据库。

在哪些情况下我应该创建唯一键或主键?


当前回答

Think the table name is employe. Primary key Primary key can not accept null values. primary key enforces uniqueness of a column. We can have only one Primary key in a table. Unique key Unique key can accept null values. unique key also enforces uniqueness of a column.you can think if unique key contains null values then why it can be unique ? yes, though it can accept null values it enforces uniqueness of a column. just have a look on the picture.here Emp_ID is primary and Citizen ID is unique. Hope you understand. We can use multiple unique key in a table.

其他回答

主键和唯一键的区别

主键和唯一键用于唯一地定义表中的一行。 主键创建列的聚集索引,而唯一键创建列的非聚集索引。

主键不允许空值,但唯一键允许一个空值。

主键的主要特征是:

它必须为每一行数据包含一个惟一的值。 不能包含空值。 一个表中只能有一个主键。

唯一键的主要特征是:

它还可以为每一行数据包含一个惟一的值。

它也可以包含空值。

一个表中有多个唯一键。

主键

主键的主要目的是提供一种方法来标识表中的每条记录。

主键提供了一种使用行中的数据标识行的方法。主键可以基于一个或多个列,比如名字和姓氏;但是,在许多设计中,主键是从标识列自动生成的数字。

主键有以下特征:

一个表只能有一个主键。 主键由一个或多个列组成。 主键强制表的实体完整性。 所有定义的列必须定义为NOT NULL。 主键唯一地标识一行。 默认情况下,主键会导致聚集唯一索引。

独特的钥匙

唯一键也称为唯一约束。可以使用唯一约束来确保数据库中的行是唯一的。

我们不是已经对主键做过了吗?是的,我们这样做,但一个表可能有几组列,你想要唯一的。

在SQL Server中,唯一密钥具有以下特征:

一个表上可以定义多个唯一键。 默认情况下,唯一键会导致非聚集的唯一索引。 一个或多个列组成一个唯一键。 列可以为NULL,但允许每个列上有一个NULL。 外键约束可以引用唯一的约束。

来源:这里

简单的主键是唯一的,不能为空,唯一的可以为空,也可以不是唯一的。

主键必须唯一。

唯一键不一定是主键-请参阅候选键。

也就是说,一个表上可能有多个列的组合可以唯一地标识一行——其中只有一个可以被选择为主键。其他键虽然是唯一的,但都是候选键。