MySQL Primary Key

17 Mar 2025 | 4 分钟阅读

MySQL 主键是用于**唯一**标识表中每个记录的一个或多个字段的组合。如果列包含主键约束,则它不能为**NULL 或空**。一个表可以有重复的列,但只能包含一个主键。它始终包含列中的唯一值。

当您向表中插入新行时,主键列还可以使用 **AUTO_INCREMENT** 属性为该行自动生成一个序列号。 MySQL 在表中定义主键后会自动创建一个名为“**Primary**”的索引。由于它关联了索引,因此我们可以说主键可以加快查询性能。

主键规则

以下是主键的规则

  1. 主键列的值必须是唯一的。
  2. 每个表只能包含一个主键。
  3. 主键列不能为空或为空。
  4. MySQL 不允许我们使用已有的主键插入新行。
  5. 建议为主键列使用 INT 或 BIGINT 数据类型。

我们可以通过两种方式创建主键

  • CREATE TABLE 语句
  • ALTER TABLE 语句

让我们逐一详细讨论。

使用 CREATE TABLE 语句创建主键

在本节中,我们将介绍如何使用 CREATE TABLE 语句创建主键。

语法

以下是在 MySQL 中创建主键的语法。

如果要创建的表只有一个主键列,请使用以下语法

如果要创建的表有多个主键列,请使用以下语法

参数解释

下表详细解释了参数。

参数名称描述
Table_name这是我们要创建的表的名称。
Col1, col2这是表中包含的列名。
Constraint_name这是主键的名称。
Column_name(s)这是将成为主键的列名。

主键示例

以下示例说明了 MySQL 中主键的用法。

此语句创建一个名为“**Login**”的表,其“**login_id**”列包含主键

接下来,使用 insert 查询将数据存储到表中

输出

在下面的输出中,我们可以看到第一个 insert 查询成功执行。而第二个 insert 语句失败并报错:主键列重复条目。

MySQL Primary Key

如果要定义**多个列**上的主键,请使用以下查询

在输出中,我们可以看到主键值包含两列,分别是**Student_ID**和**Roll_No**。

MySQL Primary Key

使用 ALTER TABLE 语句创建主键

此语句允许我们对现有表进行修改。当表没有主键时,此语句用于将主键添加到现有表的列中。

语法

以下是在 MySQL 中创建主键的 ALTER TABLE 语句的语法

示例

以下语句创建了一个名为“**Persons**”的表,该表在表定义中没有主键列。

创建表后,如果要向该表添加主键,则需要执行以下 ALTER TABLE 语句

我们可以看到输出,其中两个语句都成功执行。

MySQL Primary Key

如果表需要在已包含数据的列中添加主键,那么必须确保该列不包含重复值或 NULL 值。

删除主键

ALTER TABLE 语句还允许我们从表中删除主键。以下语法用于删除主键

示例

主键与唯一键

以下比较图表解释了它们之间的一些常见区别

序号主键唯一键
1.它是用于唯一标识表中每个记录的一个或多个字段的组合。在没有主键的情况下,它也可以唯一地确定表中的每一行。
2.它不允许在主键列中存储 NULL 值。它只能在唯一键列中接受一个 NULL 值。
3.一个表只能有一个主键。一个表可以有多个唯一键。
4.它创建一个聚集索引。它创建一个非聚集索引。

下一主题MySQL 外键