在 MySQL 数据库中,主键是非常重要的概念,它对于数据的唯一性保证、数据检索效率提升等方面都起着关键作用。本文将详细解析 MySQL 主键,涵盖主键是什么、如何创建、如何删除以及如何查询等内容。
一、主键是什么
主键(Primary Key)是数据库表中的一个或多个字段(或列),其值能够唯一标识表中的每一行记录。也就是说,在表中任意两条记录的主键值都不相同,并且主键值不能为 NULL。主键的主要作用包括:
-
加速数据检索:数据库可以利用主键建立高效的索引,从而加快查询、更新和删除等操作的速度。
-
建立表之间的关系:在关系型数据库中,主键常用于与其他表的外键建立关联,形成表之间的关系。
二、如何创建主键
在 MySQL 中,创建主键有两种常见场景:一种是在创建表时定义主键,另一种是在已有表上添加主键。
(一)创建表时定义主键
在创建表的 SQL 语句中,可以直接指定主键。具体有以下两种方式:
-
列级约束定义:在定义字段时直接声明主键。
CREATE TABLE students (student_id INT PRIMARY KEY,name VARCHAR(50),age INT);
在上述语句中,student_id字段被定义为主键,类型为 INT。
-
表级约束定义:在所有字段定义完成后,统一指定主键。
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 语句。
-
添加单个字段为主键
ALTER TABLE students ADD PRIMARY KEY (student_id);
需要注意的是,要添加为主键的字段必须不存在 NULL 值,且所有值都是唯一的,否则添加主键会失败。
-
添加联合主键
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/
,如需转载,请注明出处,否则将追究法律责任。