企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
``` `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', PRIMARY KEY (`id`), ``` | 项目 | 值 | 含义 | |---|---|---| | 字段名 | `id` | 该列的名称 | | 数据类型 | `bigint` | 8 字节长整型,取值范围 –2⁶³ ~ 2⁶³–1 | | NULL 约束 | `NOT NULL` | 插入/更新时该列不允许出现 NULL 值 | | 自增属性 | `AUTO_INCREMENT` | 每次插入新行时,若未显式指定值,则自动在上一条最大值基础上 +1 | | 注释 | `'主键ID'` | 元数据说明,提示该列作为主键,用于唯一标识一条记录 | ### 组合起来的完整含义 这个字段定义创建了一个名为 `id` 的列,它具有以下特性: 1. **数据类型**:使用64位大整数,支持最多约922万亿条记录 2. **约束**:必须包含值,不能为NULL 3. **生成方式**:自动生成唯一的递增值 4. **业务含义**:作为表的主键标识符 5. **实际效果**:当执行 `INSERT` 语句不指定id值时,MySQL会自动填充一个唯一的数字 >[info]PRIMARY KEY (`id`) 一句话总结 `PRIMARY KEY (`id`)` 把列 `id` 设成主键,保证全表每行唯一且自带“非空 + 唯一 + 聚簇索引”。 详细解释 | 维度 | 说明 | |---|---| | 本质 | 表级约束 + 特殊索引:InnoDB 里整张表数据按主键顺序物理存储(聚簇索引)。 | | 约束规则 | 1. 值不能重复 2. 不能为 NULL 3. 一张表只能有一个主键(可复合多列)。 | | 自动副作用 | 插入重复或 NULL 时直接报错;未显式定义主键时 InnoDB 会生成隐藏 row_id。 | | 性能影响 | 主键长度越短,所有二级索引体积越小;随机主键(UUID)会导致页分裂、写放大。 | | 建表示例 | `CREATE TABLE user (id BIGINT PRIMARY KEY, name VARCHAR(30));` 或复合主键:`PRIMARY KEY (tenant_id, order_id)`。 | | 常见坑 | 用字符串+长主键 → 索引巨大;更新主键值 → 实际删除再插入,代价高;顺序写反的复合主键导致查询无法命中索引。 |