0

0

什么是主键_mysql主键作用说明

P粉602998670

P粉602998670

发布时间:2025-12-25 04:21:20

|

400人浏览过

|

来源于php中文网

原创

主键是数据库表中唯一标识每行记录的必需字段,必须满足唯一性和非空性;在InnoDB中构成聚簇索引,影响数据存储与写入性能;带来快速查询、外键支持、数据防重和精准操作等工程价值;设计时应优先选用无业务含义的自增ID或UUID,避免用可变业务字段。

什么是主键_mysql主键作用说明

主键是数据库表中用于唯一标识每一行记录的一个或多个字段,它不是可选的“加分项”,而是数据组织和操作的基石。

主键的核心特性

主键必须同时满足两个硬性要求:

  • 唯一性:同一张表中,任意两行的主键值不能相同;重复插入会直接报错,比如 Duplicate entry '1' for key 'PRIMARY'
  • 非空性:主键字段不允许为 NULL,哪怕显式插入 NULL,MySQL 也会拒绝并提示错误。

主键在 InnoDB 中的实际影响

InnoDB 是 MySQL 默认且最常用的存储引擎,它的数据组织方式让主键不只是逻辑约束,更是物理结构的关键:

网人信息发布系统(WRMPS) 2008 SP2 build 0718
网人信息发布系统(WRMPS) 2008 SP2 build 0718

因为这几个版本主要以系统的运行稳定着想, 所以在功能方面并没什么大的改进,主要是对系统的优化,及一些BUG或者不太人性化的地方修改,此次版本在速度上较上版本有了50%左右的提升。WRMPS 2008 SP2 升级功能说明1,新增伪静态功能2,新增全屏分类广告功能3,新增地区分站代理功能!4,新增分站独立顶级域名支持5,新增友情连接支持分城市功能6,新增支持百度新闻规范7,新增自由设置关键词及网页

下载
  • 主键自动构成聚簇索引,整张表的数据就按主键顺序存放在 B+Tree 的叶子节点上;
  • 没有主键时,InnoDB 会找第一个非空唯一索引替代;找不到就自动生成隐藏的 6 字节 rowid——但这种“兜底”方式无法被查询、不可控,性能也差;
  • 按主键顺序插入新数据(如自增 ID)效率最高;乱序插入可能引发页分裂,影响写入性能。

主键带来的实际好处

这些不是理论优势,而是每天都在发生的工程价值:

  • 快速定位数据SELECT * FROM users WHERE id = 123 只需 1–3 次磁盘 I/O,远快于全表扫描;
  • 支撑外键关系:其他表的外键必须引用某个主键,才能启用级联删除、限制插入等完整性保护;
  • 避免脏数据:比如用邮箱作主键,天然防止同一邮箱重复注册;用自增 ID 则避免业务字段变更带来的主键重写风险;
  • 简化运维操作:更新或删除某条记录时,靠主键能精准命中,不会误删多行或漏删。

设计主键时要注意什么

选对主键,比加索引更重要:

  • 优先使用无业务含义的字段,比如 BIGINT AUTO_INCREMENTBINARY(16) UUID;
  • 避免用姓名、手机号、邮箱等可能变更或重复的业务字段——它们更适合加唯一索引,而非当主键;
  • 联合主键可用,但应谨慎:仅适用于天然由多字段共同决定唯一性的场景(如订单明细表的 (order_id, product_id)),不推荐作为通用方案;
  • 主键一旦设定,尽量不修改;也不应允许应用层随意重用已删除的主键值(尤其涉及日志、审计或分布式场景时)。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

651

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

244

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

277

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

513

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

249

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

384

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

521

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

592

2023.08.14

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

10

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.4万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 769人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号