首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql server中唯一主键与复合主键的区别

sql server中唯一主键与复合主键的区别
EN

Stack Overflow用户
提问于 2016-12-07 10:29:14
回答 4查看 15.1K关注 0票数 2

我想知道SQL Server中唯一的键和复合的主键之间有什么区别。

根据w3c学校的说法:

唯一约束唯一地标识数据库表中的每个记录。 唯一键约束和主键约束都为列或列集的唯一性提供了保证。 主键约束自动定义为唯一约束。 请注意,每个表可以有许多唯一约束,但每个表只有一个主键约束。

我们可以使用以下方法创建复合主键:

代码语言:javascript
复制
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)

对于复合主键语法:

代码语言:javascript
复制
CREATE TABLE Persons
(
P_Id int,
C_Id int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
Primary Key (P_Id,C_Id)
);
EN

回答 4

Stack Overflow用户

发布于 2016-12-07 10:38:57

唯一约束唯一地标识数据库表中的每个记录。这为列或列集的唯一性提供了保证。我们可以用这个定义(点)一行。

主键在默认情况下具有唯一的约束。

在某些表中,没有任何具有唯一值的列来定义行。在这种情况下,使用复合键。在这种情况下,两个或多个列组合在一起,因此这种组合是唯一的。

票数 7
EN

Stack Overflow用户

发布于 2016-12-07 10:36:43

正如您自己说的,惟一键和主键之间的唯一区别是,表上可能只有一个主键,而它可以有更多唯一的键。

此外,主键的值可能不是null。

唯一键和主键都可以由多个列(组合键)组成。

通过这些方法,在您的示例中,P_Id列上有一个唯一的键,而包含该列的一个组合主键。

这毫无意义。

我建议只在该P_Id列上创建一个简单的主键。

票数 0
EN

Stack Overflow用户

发布于 2016-12-07 10:38:01

组合键由多个列组成。

主键可以防止具有相同键列值的表中的第二行。

主键可以由单个列和多个列组成。因此,主键也可以定义为复合键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41015034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档