SQL PRIMARY KEY

2025年8月2日 | 阅读7分钟

SQL 中,PRIMARY KEY(主键)是唯一标识表中每一行的列。它充当表中的主要标识符,并确保每一行都包含不同的值。两行的值不能相同。它有助于防止表中出现重复和 NULL 条目。它还有助于保持数据的连贯性、准确性和完整性。

SQL PRIMARY KEY

此键包含唯一值,不应包含 NULL 值。在一个表中,只能有一个主键。主键可以为一个列或多个组合列创建。

SQL PRIMARY KEY 的属性

  • 不允许重复值。如果一列被指定为主键,则它只包含唯一值。
  • 主键不允许 NULL 值。
  • 表中只接受一个主键。
  • 如果主键包含多个列,则称为复合主键。

应用 SQL PRIMARY KEY 有多种语法

语法 1:用于在一列上应用 PRIMARY KEY 约束

参数

CREATE TABLE: 通过此命令,我们创建一个新表。

TableName: 在表名处,我们分配实际的表名。

column1, column2: 在此处,我们提供列名以在行中存储数据。

datatype: 在此处,我们定义列将持有的数据类型。

PRIMARY KEY: 主键确保列值必须是 UNIQUE(唯一)且 NOT NULL(非空)。

语法 2:用于应用带名称的 PRIMARY KEY 约束

参数

CONSTRAINT: 这是一个 SQL 关键字,用于在列上应用限制。

pk_constraint_name: 这是主键约束的自定义名称。

column_name: 这是应用主键约束的列名。

语法 2 的所有其他参数与我们上面已经讨论过的语法 1 类似。

语法 3:用于在多个列上应用 PRIMARY KEY 约束

参数

语法 3 的所有参数与语法 2 完全相同,但唯一的区别是多个列将在 PRIMARY KEY 关键字后面的括号内列出。

PRIMARY KEY 示例

为了更好地解释 PRIMARY KEY,我们使用了以下示例。

示例 1

步骤 1

创建一个名为 Universities 的表并向其中插入数据。

创建“Universities”表

向“Universities”插入数据

显示表的查询

输出

UniversityIDUniversityName地点
1斯坦福大学加利福尼亚
2哈佛大学Cambridge
3University of MelbourneMelbourne
4密歇根大学Michigan
5MIT英格兰

步骤 2

创建 Students 表并向其中插入数据。

创建“Students”表

向“Students”插入数据

显示表的查询

输出

StudentID学生姓名年龄UniversityID
101Alice Brown201
102David Miller222
103Sara Khan193
104John212

步骤 3

使用主键合并表的查询。

输出

StudentID学生姓名年龄UniversityName地点
101Alice Brown20斯坦福大学加利福尼亚
102David Miller22哈佛大学Cambridge
103Sara Khan19University of MelbourneMelbourne
104John21哈佛大学Cambridge

说明

在上面的示例中,我们使用了两个表,名为 Universities 和 Students。我们使用 UniversityID 作为主键,它用于连接学生表,其中每个学生通过相同的 UniversityID 连接到大学,我们可以通过该 ID 从两个表中检索信息。

示例 2

在此示例中,我们将使用 WHEREORDER BY 子句通过主键合并表。

步骤 1

创建 Movies 表并向其中插入数据。

创建“Movies”表

向“Movies”插入数据

显示表的查询

输出

movie_idtitlerelease_yeargenre
1Inception2010Sci-Fi
2泰坦尼克号1997剧情
3The Matrix1999操作
4Twilight2008Romantic Fantasy
5Red Notice2021操作

步骤 2

创建 Actors 表并向其中插入数据。

创建“Actors”表

向“Actors”插入数据

显示表的查询

输出

actor_idnamemovie_id
1Dwayne Johnson5
2Leonardo DiCaprio1
3Kristen Stewart4
4Kate Winslet2
5Keanu Reeves3

步骤 3

使用 WHERE 子句ORDER BY 子句通过主键合并表的查询。

输出

actor_namemovie_titlemovie_title
Keanu ReevesThe Matrix1999
Kristen StewartTwilight2008
Leonardo DiCaprioInception2010
Dwayne JohnsonRed Notice2021

说明

在上面的示例中,我们使用 movie ID 作为 主键,在 ActorsMovies 表之间执行了内连接。在此 SELECT 语句中,我们选择了特定的列,并使用别名重命名列以提高可读性。它使用 WHERE 子句检索 1998 年之后发布的电影,并使用 ORDER BY 子句对它们进行排序。

ALTER TABLE 上的 SQL 主键

当一个表已经被构建,而我们想在该表上应用 PRIMARY KEY 约束时,我们可以使用 ALTER TABLE 语句。

我们可以使用给定的语法在现有表上应用主键约束。

单列主键

多列主键

注意:当您使用 ALTER TABLE 语句添加主键时,主键列在表首次创建时不能包含 NULL 值。

如何删除 PRIMARY KEY 约束?

如果您想 DROP(删除)主键约束,您应该使用以下语法

MySQL/ MariaDB

SQL Server/ Oracle/ MS Access

主键需要记住的要点

  • 主键强制执行表的主体完整性。
  • 它总是具有唯一的数据。
  • 主键长度不能超过 900 字节。
  • 主键不能包含 NULL 值。
  • 主键不能有重复值。
  • 一个表只能包含一个主键约束。

结论

SQL PRIMARY KEY 是表中的列,它唯一标识每一行,并且不允许 NULL 值。一个表只有一个主键,它可以由一个列或多个列组成。如果一个键包含多个列,那么我们称之为 复合键。主键通过使用外键建立表之间的关系。

如果您想在现有表上应用主键,那么您可以借助 ALTER TABLE 来完成。如果您需要从表中删除主键,那么您可以使用 DROP 关键字。

常见问题解答 (FAQs)

1. 主键的主要目的是什么?

主键的主要目的是在表中的每个记录中拥有一个 UNIQUE(唯一)且 NOT NULL(非空)的值。

2. 一个表可以存在多少个主键?

一个表只能有一个主键,它可以应用于单个列或多个列。

3. 唯一键和主键之间有什么区别?

唯一键主键
它唯一标识每一行的值,并且还允许 null 值。它将在表中的每一行中启用唯一且非空的值。
它可以在表上多次使用。它在表中只能使用一次。

4. SQL 中的复合主键是什么?

复合主键是 SQL 约束之一,它应用于多个列的组合。

5. 主键可以更改或更新吗?

是的,主键可以更新。ALTER TABLE 命令用于更新表的主键。


下一个主题SQL Foreign Key