【问题标题】:Difference Between Unique And Composite Primary key In sql serversql server中唯一主键和复合主键的区别
【发布时间】:2017-04-22 06:04:41
【问题描述】:

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

根据w3c学校:

UNIQUE 约束唯一标识数据库表中的每条记录。

UNIQUE 和 PRIMARY KEY 约束都为一列或一组列提供唯一性保证。

PRIMARY KEY 约束自动定义了一个 UNIQUE 约束。

请注意,每个表可以有许多 UNIQUE 约束,但每个表只能有一个 PRIMARY KEY 约束。

我们可以使用这个来创建复合主键:

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)
)

对于复合主键语法:

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)
);

【问题讨论】:

标签: sql sql-server primary-key unique-constraint


【解决方案1】:

正如您自己所说,唯一键和主键之间的唯一区别是表上可能只有一个主键,而它可以有更多唯一键。
此外,主键的值不能为空。
唯一键和主键都可以由多列(组合键)组成。

顺便说一句,在您的示例中,您在 P_Id 列上有一个唯一键和一个包含该列的组合主键。
这没有任何意义。
我建议只在 P_Id 列上创建一个简单的主键。

【讨论】:

    【解决方案2】:

    复合键由多于一列组成

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

    主键可以由单列和多列组成。所以主键也可以定义为复合键。

    【讨论】:

      【解决方案3】:

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

      默认情况下,PRIMARY KEY 具有 UNIQUE 约束。

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

      【讨论】:

      • 那么你在这里的意思是复合主键在默认情况下也是唯一的,对吧?谢谢
      猜你喜欢
      • 2012-03-22
      • 2011-09-16
      • 2013-10-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多