我正在使用mysql数据库。我对主键和唯一键之间感到困惑。
请帮助我在哪里创建主键和唯一键。我的意思是在哪种情况下我们创建唯一键或主键。
我正在使用mysql数据库。我对主键和唯一键之间感到困惑。
请帮助我在哪里创建主键和唯一键。我的意思是在哪种情况下我们创建唯一键或主键。
Answers:
首要的关键:
NULL
-例如MySQL添加NOT NULL
唯一键:
NULL
值NULL
; 多个行可以具有NULL
值,因此可能不被视为“唯一”唯一键(UK):这是一列或一组列,可以标识一行中的唯一性。
主键(PK):它还是一列或一组列,可以标识一行中的唯一性。
因此,主键只是唯一键的另一个名称,但是SQL Server中的默认实现对于主键和唯一键是不同的。
默认:
这实际上取决于您决定创建英国还是PK的目标。它遵循一个类似的比喻,“如果有一个由三个人组成的团队,那么他们都是同龄人,但是会有一个人将是一对同龄人:PK和UK具有相似的关系”。我建议阅读这篇文章:作者提供的示例似乎不太合适,但请尝试获得一个总体思路。
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
[table_name]_pkey
将向表中添加一个新列(默认名称为)(我听说过这称为代理键)。来源:postgresqltutorial.com/postgresql-primary-key我是这一切的新手,所以我希望有一个知识渊博的海报来指出我错过的细微差别。
对于组织或企业而言,有太多的物理实体(例如人,资源,机器等)和虚拟实体(其任务,交易,活动)。通常,业务需要记录和处理那些业务实体的信息。这些业务实体在整个业务域中由密钥标识。
根据RDBMS的预期,键(也称为候选键)是唯一标识实体的一个值或一组值。
对于数据库表,存在如此多的键,并且可能有资格使用主键。这样所有键,主键,唯一键等统称为候选键。但是,DBA从候选密钥中选择一个用于搜索记录的密钥称为“主密钥”。
主键和唯一键之间的区别
1.行为: 主键用于标识表中的行(记录),而唯一键用于防止列中的值重复(空条目除外)。
2.索引: 默认情况下,SQL引擎会在主键上创建聚簇索引(如果不存在),并在唯一键上创建非聚簇索引。
3.可空性:主键不包含空值,而唯一键可以。
4.存在:一个表最多可以有一个主键,但是可以有多个唯一键。
5.可修改性:您不能更改或删除主值,但是唯一键值可以。
有关更多信息和示例:
主键和唯一键之间的区别
+-----------------------------------------+-----------------------------------------------+ | Primary Key | Unique Key | +-----------------------------------------+-----------------------------------------------+ | Primary Key can't accept null values. | Unique key can accept only one null value. | +-----------------------------------------+-----------------------------------------------+ | By default, Primary key is clustered | By default, Unique key is a unique | | index and data in the database table is | non-clustered index. | | physically organized in the sequence of | | | clustered index. | | +-----------------------------------------+-----------------------------------------------+ | We can have only one Primary key in a | We can have more than one unique key in a | | table. | table. | +-----------------------------------------+-----------------------------------------------+ | Primary key can be made foreign key | In SQL Server, Unique key can be made foreign | | into another table. | key into another table. | +-----------------------------------------+-----------------------------------------------+
您可以从以下位置找到详细信息:http :
//www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html
我知道这个问题已经有好几年了,但我想提供一个答案,解释为什么而不是如何
主键的目的:唯一地标识数据库中的行=>行表示由表建模的实体类型的单个实例。主键可增强实体的完整性,即AKA实体完整性。主键是聚簇索引,即它定义了数据在表中的物理存储顺序。
唯一键的目的:好的,使用主键,我们可以唯一标识一行。但是我有一个业务需求,使得另一列/一组列应该具有唯一值。好吧,从技术上讲,鉴于此列是唯一的,因此它可以成为强制执行实体完整性的候选者。但是据我们所知,此列可能包含来自外部组织的数据,我可能会对它的独特性有所怀疑。我可能不信任它提供实体完整性。我只是将它作为满足我的业务需求的唯一钥匙。
你去!
唯一键:-当您必须提供唯一值时应使用它。如果是唯一键,则意味着还可以使用空值。唯一键是那些在该列中唯一且不相似的键,例如您的宠物名.it不能像null一样,如果您在数据库环境中进行查询,则必须注意,每个null与数据库中的另一个null都不相同。EXCEPT-SQL Server,其中null = null为true
主键:-当您必须唯一标识一行时应使用。主键是数据库约束中每行唯一的键,因为它不允许其中的空值。因此,您可能已经看到数据库有一个自动递增的列,它是表的主键。加上它可以作为另一个表的外键。例如可以是订单表上的orderId,帐单表中的billId。
现在回到何时使用它的情况:-
1) 列中的主键不能在表中为空,并且您在另一个表中用作创建关系的外键
2)表格中的唯一键,它不会影响表格或整个数据库中的内容,无论您是否为餐厅中的零食(例如餐厅的零食)取特定列的空值,都可能不在餐厅中零食
主键和唯一键之间的区别
双方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
。
主键的主要目的是提供一种识别表中每个记录的方法。
主键提供了一种使用行中的数据标识行的方法。主键可以基于一个或多个列,例如名和姓;但是,在许多设计中,主键是从标识列自动生成的数字。
主键具有以下特征:
唯一键也称为唯一约束。可以使用唯一性约束来确保行在数据库中是唯一的。
我们不是已经用主键做到了吗?是的,是的,但是一个表可能有几组您想要唯一的列。
在SQL Server中,唯一键具有以下特征:
来源:这里
主键的主要功能是:
每行数据必须包含唯一值。它不能包含空值。一个表中只有一个主键。
唯一键的主要功能是:
它也可以为每行数据包含一个唯一值。
它也可以包含空值。
一个表中的多个唯一键。
PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT