MySQL如何使复合主键唯一

MySQL如何使复合主键唯一

在本文中,我们将介绍如何使用MySQL创建一个具有唯一复合主键的表。复合主键是由多个列组成的主键,它们一起确保每一行数据的唯一性。为了使复合主键成为唯一的,我们需要使用UNIQUE约束。

阅读更多:MySQL 教程

创建一个具有复合主键的表

让我们来看一个示例表,其中包含两个列:ID和Name。我们将把它们作为复合主键并在其中添加一些数据。我们可以使用以下SQL语句创建这个表:

CREATE TABLE ExampleTable (ID INT NOT NULL, Name VARCHAR(50) NOT NULL, PRIMARY KEY(ID, Name));

在上面的SQL语句中,我们使用了PRIMARY KEY选项将ID和Name组合起来作为复合主键。这个语句将创建一个具有ID和Name列的新表,并将它们合并成一个复合主键。

让我们向这个表中添加一些数据:

INSERT INTO ExampleTable (ID, Name) VALUES (1, 'John');
INSERT INTO ExampleTable (ID, Name) VALUES (2, 'Michael');
INSERT INTO ExampleTable (ID, Name) VALUES (3, 'Julia');

这将向我们的表中添加三行数据。现在,如果我们再次尝试向表中添加重复的数据,MySQL将拒绝它,因为复合主键已经被占用了。

在复合主键中添加列

我们可以随时通过ALTER TABLE语句向我们的表中添加新列。这个新列也可以作为复合主键的一部分。下面是一个示例,我们向表中添加了Age列:

ALTER TABLE ExampleTable ADD Age INT NOT NULL;
ALTER TABLE ExampleTable ADD PRIMARY KEY (ID, Name, Age);

在上面的SQL语句中,我们使用了ALTER TABLE语句和ADD选项向表中添加了一个新列。我们还使用了PRIMARY KEY选项将ID、Name和Age合并成一个新的复合主键。现在,我们的表的主键包含了三个列(ID、Name和Age),并且每一行都必须是唯一的。当我们尝试向表中添加重复的数据时,MySQL将再次拒绝它。

注意事项

需要注意的是,如果我们的表中只有一个自增列,那么我们可以使用它作为主键,并将其他列添加为UNIQUE约束。如下所示:

CREATE TABLE ExampleTable2 (ID INT NOT NULL AUTO_INCREMENT, Name VARCHAR(50) NOT NULL, Age INT NOT NULL, PRIMARY KEY(ID), UNIQUE(Name, Age));

在这个示例中,我们将ID列设置为主键,并将Name和Age列作为UNIQUE约束。这将确保在整个表中只有一个ID值,并且每一行的Name和Age列都是唯一的。

总结

在本文中,我们介绍了如何使用MySQL创建一个具有唯一复合主键的表。我们通过使用UNIQUE约束来确保主键的唯一性,并向表中添加了新列来扩展我们的主键。我们还研究了一种特殊情况,其中一个自增列被用作主键,而其他列作为UNIQUE约束。现在,您已经知道如何创建一个具有唯一复合主键的MySQL表,可以在更复杂的数据集中使用它,确保每一行都唯一。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程