Mysql:主键
MySQL 中的主键(Primary Key)是用来唯一标识表中每一行数据的字段或字段组合。
例如:
CREATE TABLE users ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT );这里id就是主键。
主键的特点
唯一
不能有两行数据拥有相同的主键值。
不能为 NULL
每一行都必须有确定的主键值。
一张表只能有一个主键
但主键可以由多个字段组成,这叫联合主键:
PRIMARY KEY (user_id, course_id)通常会自动建立索引
主键本身就是一种索引,适合根据主键快速查询:
SELECT * FROM users WHERE id = 10;不一定需要自增
主键可以是:
- 自增数字
- UUID
- 业务编号
- 多个字段组合
InnoDB 中的特殊含义
在 InnoDB 中,主键索引通常是聚簇索引:
主键索引的叶子节点 = 主键值 + 完整的一行数据所以根据主键查询时,找到主键索引叶子节点就能直接得到整行数据。
如果没有显式定义主键,InnoDB 会依次尝试:
- 使用第一个
UNIQUE NOT NULL索引作为聚簇索引; - 如果也没有,则自动生成隐藏的 6 字节行 ID。
简单来说:
主键就是一张表中用于唯一确定每一行记录的“身份证号”。