我使用的是MySQL数据库。
在哪些情况下我应该创建唯一键或主键?
主键必须唯一。
唯一键不一定是主键——参见候选关键字。
也就是说,一个表上可能有多个列的组合可以唯一地标识一行——其中只有一个可以被选择为主键。其他键虽然是唯一的,但都是候选键。
主键具有标识数据库行的语义。因此,一个给定的表只能有一个主键,而可以有许多唯一键。
同样的原因,主键不能为NULL(至少在Oracle中,其他数据库就不确定了)
因为它标识了行,所以它永远不应该更改。改变主键一定会造成严重的痛苦,甚至可能是永恒的诅咒。
因此,在大多数情况下,你需要一些人为的id作为主键,它只用于标识表中的单行。
另一方面,唯一键可以随心所欲地更改。
主键是唯一的键。
每个表必须有最多 ONE主键,但它可以有多个唯一键。主键用于唯一地标识表行。主键不能是NULL,因为NULL不是一个值。
NULL
唯一密码匙(英国):它是一个列或一组列,可以识别一行中的唯一性。
主键(PK):它是也一个列或一组列,可以识别一行中的唯一性。
因此,主键只是唯一键的另一个名称,但SQL Server中的默认实现对主键和唯一键是不同的。
默认情况下:
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
主键:
NOT NULL
独特的关键:
根据RDBMS的预期,密钥(又名候选密钥)是唯一标识一个实体的一个值或一组值。
主键和唯一键的区别
1. 行为:主键用于标识表中的一行(记录),而唯一键用于防止列中的重复值(空项除外)。
2. 索引:默认情况下,sql引擎在主键上创建聚集索引(如果不存在),在唯一键上创建非聚集索引。
3.Nullability:主键不包括空值,而唯一键可以。
一个表最多可以有一个主键,但可以有多个唯一键。
5. 可修改性:你不能改变或删除主值,但唯一键值可以。
更多信息和示例:
http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html
简单的主键是唯一的,不能为空,唯一的可以为空,也可以不是唯一的。
如果你的数据库设计不需要外键,那么你可以使用唯一键(但是记住唯一键允许一个空值)。
如果数据库需要外键那么你别无选择只能用主键。
要查看唯一键和主键之间的区别,请访问在这里
唯一键:- 当你必须提供独特的价值时,就应该使用它。在这种情况下 唯一键,它意味着空值也被允许。唯一键就是那些 列中唯一且不相似的键,例如 你的爱称。__abc0 ,它不能是null,如果你在数据库的上下文中询问,那么必须注意,每个null都不同于数据库中的另一个null
唯一键:- 当你必须提供独特的价值时,就应该使用它。在这种情况下 唯一键,它意味着空值也被允许。唯一键就是那些 列中唯一且不相似的键,例如 你的爱称。__abc0
主键:- 它应该在必须唯一标识一行时使用。Primary是一个键,它对数据库约束中的每一行都是唯一的,它不允许它为空。你可能看到数据库中有一个列是自动递增的它是表的主键。另外,它可以在另一个表中用作外键。example可以是ordertable上的orderId,在帐单中. 现在回到什么情况下使用它:-
主键:- 它应该在必须唯一标识一行时使用。Primary是一个键,它对数据库约束中的每一行都是唯一的,它不允许它为空。你可能看到数据库中有一个列是自动递增的它是表的主键。另外,它可以在另一个表中用作外键。example可以是ordertable上的orderId,在帐单中.
现在回到什么情况下使用它:-
1) <强>列中的主键 在表中不是空,并且在另一个表中用作外键 创建关系
2)表中唯一的键 不影响在表中或在整个数据库中 对于特定列为Null,比如餐馆里的小吃 可能你在餐馆里不带零食
主键的主要目的是提供一种方法来标识表中的每条记录。
主键提供了一种使用行中的数据标识行的方法。主键可以基于一个或多个列,比如名字和姓氏;但是,在许多设计中,主键是从标识列自动生成的数字。
主键有以下特征:
唯一键也称为唯一约束。可以使用唯一约束来确保数据库中的行是唯一的。
我们不是已经对主键做过了吗?是的,我们这样做,但一个表可能有几组列,你想要唯一的。
在SQL Server中,唯一密钥具有以下特征:
来源:在这里
Primary key和Unique Key都用于唯一定义表中的一行。 Primary Key创建列的clustered index,而Unique creates an unclustered index of the column. 0创建列的clustered index。< / p >
Primary key
Unique Key
Primary Key
clustered index
Unique creates an unclustered index of the column
A Primary Key不允许NULL value,但是a Unique Key允许one NULL value。
A Primary Key
NULL value
a Unique Key
one NULL value
我知道这个问题是几年前的,但我想为这个解释为什么而不是如何提供一个答案
主键的作用:在数据库中唯一地标识一行=>一行表示由表建模的实体类型的单个实例。主键强制实体的完整性,即实体完整性。主键将是一个聚集索引,即它定义了数据在表中物理存储的顺序。
唯一密钥的用途:好的,有了主键,我们就有了唯一标识一行的方法。但我有业务需求,另一列/一组列应该具有唯一的值。从技术上讲,如果这个列是唯一的,那么它可以作为强制实体完整性的候选列。但据我们所知,这一列可能包含来自外部组织的数据,我可能怀疑这些数据是否是唯一的。我可能不相信它能提供实体完整性。我只是让它成为一个唯一的键来满足我的业务需求。
好了!
主键的主要特征是:
它必须包含每行数据的唯一值。 不能包含空值。
唯一键的主要特征是:
它还可以为每一行数据包含一个惟一的值。
它也可以包含空值。
一个表中有多个唯一键。