我想知道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)
);
答案 0 :(得分:5)
UNIQUE约束唯一标识数据库表中的每条记录。这为列或列集的唯一性提供了保证。我们可以用这个来定义(指向)一行。
PRIMARY KEY默认具有UNIQUE约束。
虽然在某些表中,但不会有任何具有唯一值的列来定义行。在这种情况下,使用COMPOSITE KEY。在这种情况下,将两个或更多列组合在一起,使得该组合是唯一的。
答案 1 :(得分:0)
正如您自己所说,唯一键和主键之间的唯一区别是,表上可能只有一个主键,而它可以有更多唯一键。
此外,主键的值可能不为空
唯一键和主键都可以由多个列组成(组合键)。
顺便提一下,在您的示例中,您在P_Id列上有一个唯一键,并且包含一个包含该列的组合主键。
这没有任何意义
我建议只在该P_Id列上创建一个简单的主键。
答案 2 :(得分:0)
复合键由多个列组成
主键可防止该表上的第二行具有相同的键列值。
主键可以由单个列以及多个列组成。因此主键也可以定义为复合键。