创建表时可通过PRIMARY KEY关键字定义主键,MySQL自动创建主键索引并保证唯一非空;2. 已有表可使用ALTER TABLE ADD PRIMARY KEY添加主键,需确保字段无重复和NULL值;3. 删除主键使用ALTER TABLE DROP PRIMARY KEY,若含AUTO_INCREMENT属性需注意处理顺序;4. 支持复合主键,用多个字段组合创建主键索引,确保组合唯一。主键索引提升查询效率并保障数据完整性。
在 MySQL 中创建主键索引,可以通过定义表结构时指定主键字段,数据库会自动为其创建主键索引(PRIMARY KEY INDEX)。主键具有唯一性和非空性,常用于标识表中的每一行数据。
1. 创建表时定义主键
在
CREATE TABLE
语句中使用
PRIMARY KEY
关键字来创建主键索引。
上述语句中,
id
字段被设为主键,MySQL 会自动为其创建名为
PRIMARY
的索引,并启用自增属性。
2. 修改已有表添加主键
如果表已经存在但没有主键,可以使用
ALTER TABLE
添加主键索引。
注意:添加主键前,确保该字段没有重复值且不包含 NULL。
3. 删除主键
若需删除主键(例如更换主键字段),可执行:
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
如果主键字段有
AUTO_INCREMENT
属性,可能需要先移除该属性或先删除索引。
4. 复合主键(多字段主键)
有时需要多个字段共同作为主键,例如关联表:
此时,order_id 和 product_id 的组合必须唯一,MySQL 会为这个组合创建主键索引。
基本上就这些。主键索引是表设计的基础,合理设置能提升查询效率并保证数据完整性。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100)
);
ALTER TABLE users ADD PRIMARY KEY (id);
ALTER TABLE users DROP PRIMARY KEY;
CREATE TABLE orders_products (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
