Unique和Composite主键之间的区别在sql server中

时间:2016-12-07 10:29:15

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

我想知道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)
);

3 个答案:

答案 0 :(得分:5)

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

PRIMARY KEY默认具有UNIQUE约束。

虽然在某些表中,但不会有任何具有唯一值的列来定义行。在这种情况下,使用COMPOSITE KEY。在这种情况下,将两个或更多列组合在一起,使得该组合是唯一的。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

复合键由多个列组成

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

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