我使用的是MySQL数据库。

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


当前回答

Unique key :- It should be used when you have to give unique value.In the case of unique key it means null values are also allowed.Unique keys are those keys which are unique and non similar in that column like for example your pet name.it can be nothing like null and if you are asking in context of database then it must be noted that every null is different from another null in the database.EXCEPT-SQL Server where null=null is true


主键:— 它应该在必须唯一标识一行时使用。Primary是一个键,它对数据库约束中的每一行都是唯一的,它不允许它为空。你可能看到数据库中有一个列是自动递增的它是表的主键。另外,它可以在另一个表中用作外键。例如订单表中的orderId,账单表中的billId。 现在回到什么情况下使用它:-

1)主键在哪个列可以 在表中不是空,并且在另一个表中用作外键 用于创建关系的表

2)唯一键在表中所在 不影响在表中或在整个数据库中 对于特定列为Null,比如餐馆里的小吃 可能你在餐馆里不带零食

其他回答

主键具有标识数据库行的语义。因此,一个给定的表只能有一个主键,而可以有许多唯一键。

同样的原因,主键不能为NULL(至少在Oracle中,其他数据库就不确定了)

因为它标识了行,所以它永远不应该更改。改变主键一定会造成严重的痛苦,甚至可能是永恒的诅咒。

因此,在大多数情况下,你需要一些人为的id作为主键,它只用于标识表中的单行。

另一方面,唯一键可以随心所欲地更改。

对于一个组织或企业来说,有许多物理实体(如人员、资源、机器等)和虚拟实体(它们的任务、事务、活动)。 通常,业务需要记录和处理这些业务实体的信息。 这些业务实体在整个业务域中由一个Key标识。

根据RDBMS的预期,密钥(又名候选密钥)是唯一标识一个实体的一个值或一组值。

对于一个DB-Table,有很多存在的键,并且可能符合主键的条件。 因此,所有键、主键、唯一键等统称为候选键。 但是,DBA从候选密钥中选择一个用于搜索记录的密钥称为主密钥。

主键和唯一键的区别

1. 行为:主键用于标识表中的一行(记录),而唯一键用于防止列中的重复值(空项除外)。

2. 索引:默认情况下,sql引擎在主键上创建聚集索引(如果不存在),在唯一键上创建非聚集索引。

3.可空性:主键不包括空值,而唯一键可以。

4. 存在:一个表最多只能有一个主键,但可以有多个唯一键。

5. 可修改性:您不能更改或删除主值,但唯一键值可以。

更多信息和示例:

http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html

主键和唯一键的区别

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

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

Unique key :- It should be used when you have to give unique value.In the case of unique key it means null values are also allowed.Unique keys are those keys which are unique and non similar in that column like for example your pet name.it can be nothing like null and if you are asking in context of database then it must be noted that every null is different from another null in the database.EXCEPT-SQL Server where null=null is true


主键:— 它应该在必须唯一标识一行时使用。Primary是一个键,它对数据库约束中的每一行都是唯一的,它不允许它为空。你可能看到数据库中有一个列是自动递增的它是表的主键。另外,它可以在另一个表中用作外键。例如订单表中的orderId,账单表中的billId。 现在回到什么情况下使用它:-

1)主键在哪个列可以 在表中不是空,并且在另一个表中用作外键 用于创建关系的表

2)唯一键在表中所在 不影响在表中或在整个数据库中 对于特定列为Null,比如餐馆里的小吃 可能你在餐馆里不带零食

主键

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

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

主键有以下特征:

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

独特的钥匙

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

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

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

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

来源:这里