ITPub博客

首页 > 数据库 > MySQL > MySQL 主键全面解析:定义、创建、删除与查询

MySQL 主键全面解析:定义、创建、删除与查询

原创 MySQL 作者:worldtour 时间:2025-06-19 10:48:53 0 删除 编辑


在 MySQL 数据库中,主键是非常重要的概念,它对于数据的唯一性保证、数据检索效率提升等方面都起着关键作用。本文将详细解析 MySQL 主键,涵盖主键是什么、如何创建、如何删除以及如何查询等内容。

一、主键是什么

主键(Primary Key)是数据库表中的一个或多个字段(或列),其值能够唯一标识表中的每一行记录。也就是说,在表中任意两条记录的主键值都不相同,并且主键值不能为 NULL。主键的主要作用包括:
  • 保证数据唯一性:确保表中没有重复的记录。
  • 加速数据检索:数据库可以利用主键建立高效的索引,从而加快查询、更新和删除等操作的速度。
  • 建立表之间的关系:在关系型数据库中,主键常用于与其他表的外键建立关联,形成表之间的关系。

二、如何创建主键

在 MySQL 中,创建主键有两种常见场景:一种是在创建表时定义主键,另一种是在已有表上添加主键。

(一)创建表时定义主键

在创建表的 SQL 语句中,可以直接指定主键。具体有以下两种方式:
  1. 列级约束定义:在定义字段时直接声明主键。
CREATE TABLE students (student_id INT PRIMARY KEY,name VARCHAR(50),age INT);
在上述语句中,student_id字段被定义为主键,类型为 INT。
  1. 表级约束定义:在所有字段定义完成后,统一指定主键。
CREATE TABLE students (student_id INT,name VARCHAR(50),age INT,PRIMARY KEY (student_id));
这种方式适用于单个字段或多个字段组成的联合主键。例如,若有一个表需要两个字段共同作为主键:
CREATE TABLE exam_scores (student_id INT,exam_id INT,score INT,PRIMARY KEY (student_id, exam_id));

(二)在已有表上添加主键

如果表已经创建完成,之后需要添加主键,可以使用 ALTER TABLE 语句。
  1. 添加单个字段为主键
ALTER TABLE students ADD PRIMARY KEY (student_id);
需要注意的是,要添加为主键的字段必须不存在 NULL 值,且所有值都是唯一的,否则添加主键会失败。
  1. 添加联合主键
ALTER TABLE exam_scores ADD PRIMARY KEY (student_id, exam_id);

三、如何删除主键

删除主键时,需要使用 ALTER TABLE 语句。需要注意的是,主键一旦被删除,表中就不再有主键约束,但表中的数据仍然存在,只是失去了主键所带来的唯一性和非 NULL 约束。
ALTER TABLE students DROP PRIMARY KEY;
这里需要注意,如果主键是自增主键(通常用于单个字段的主键),在删除主键后,自增属性也会被移除。另外,如果表中存在外键关联到该主键,需要先删除外键约束,才能删除主键,否则会报错。

四、如何查询主键

在 MySQL 中,可以通过查询系统表来获取表的主键信息。具体来说,可以查询INFORMATION_SCHEMA数据库中的COLUMNS表和KEY_COLUMN_USAGE表。

(一)查询表的主键字段

SELECT COLUMN_NAMEFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名' AND COLUMN_KEY = 'PRI';
将上述语句中的 ' 数据库名 ' 和' 表名 ' 替换为实际的数据库名称和表名称即可。例如,查询数据库test中表students的主键字段:
SELECT COLUMN_NAMEFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'students' AND COLUMN_KEY = 'PRI';

(二)查询表的主键信息(包括联合主键)

SELECT COLUMN_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名' AND CONSTRAINT_NAME = 'share.sjbt.org';
同样,替换相应的数据库名和表名。对于联合主键,这条语句会返回所有组成主键的字段名。

总结

主键是 MySQL 数据库中确保数据完整性和提升性能的重要机制。在创建表时,应根据业务需求合理选择主键,可以是单个字段,也可以是联合主键。在操作主键时,无论是创建还是删除,都要注意数据的一致性和约束条件。通过查询系统表,能够方便地获取表的主键信息,这对于数据库的管理和维护非常重要。合理使用主键,能够让我们更好地管理和操作数据库中的数据。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70046748/viewspace-3088227/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2025-06-12

  • 博文量
    26
  • 访问量
    38774