温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

主键作用到底是什么

发布时间:2026-09-03 03:05:31 来源:亿速云 阅读:87 作者:小樊 栏目:数据库

**主键(Primary Key)**在关系型数据库中,核心作用可以从「技术约束」和「业务意义」两个层面来理解。


一、技术层面:主键到底干了什么

1. 唯一标识一行数据

主键的最根本作用

在表中唯一定位一条记录,不允许重复,也不允许为空。

例如:

用户表 users
id (主键) | name
1         | 张三
2         | 李四

没有主键,你就无法可靠地说“我要更新的是哪一条张三”。


2. 保证数据完整性(实体完整性)

数据库通过主键强制:

  • ✅ 值唯一(UNIQUE)
  • ✅ 不为 NULL(NOT NULL)

防止出现:

  • 两条一模一样的记录
  • 无法区分的“幽灵数据”

3. 作为其他表引用的“锚点”(外键基础)

主键是被引用的标准

orders.user_id → users.id

没有主键,外键(FOREIGN KEY)就无从谈起。


4. 影响存储与查询性能

  • 主键通常对应聚簇索引(如 MySQL InnoDB)
  • 数据物理存储顺序 ≈ 主键顺序
  • 主键设计不好 → 插入随机、页分裂、查询变慢

二、业务层面:主键 ≠ 业务字段

常见误区

❌ 用「手机号」当主键
❌ 用「身份证号」当主键
❌ 用「订单号(含业务含义)」当主键

问题:

  • 业务规则会变
  • 业务字段可能改、可能空、可能重复(历史原因)

正确做法(常见)

  • 自增 ID(AUTO_INCREMENT
  • UUID
  • 雪花 ID(分布式)

主键只负责“找得到”,不负责“看得懂”


三、一句话总结

主键的作用:

用最小成本、最强约束,唯一、稳定、高效地定位一条数据,并保证数据库结构可靠。

如果你愿意,我也可以:

  • 用「订单系统」举个完整例子
  • 讲「主键 vs 唯一索引」区别
  • 讲「分布式系统主键怎么设计」
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI