MySQL8数据库高级特性

一、主键(Primary Key)

核心特性

  1. 唯一性:作为记录的唯一标识,数据表内无重复值;
  2. 单表唯一:一张数据表仅能设置一个主键;
  3. 组合支持:可由单个字段或多个字段组合构成;
  4. 非空约束:主键字段自带非空属性,无需额外定义。

核心作用

  1. 唯一标识数据:精准区分表内每一条记录,是数据查找的核心依据;
  2. 保证数据完整:通过非空和唯一约束,避免重复、无效数据录入或修改;
  3. 提升查询效率:主键会自动生成索引,大幅加快基于主键的查找速度;
  4. 建立表间关联:作为外键的关联对象,实现多张数据表的关联。

核心操作

mysql

-- 建表时创建主键

CREATE TABLE users (

id INT AUTO_INCREMENT,

username VARCHAR(50) NOT NULL,

password VARCHAR(50) NOT NULL,

PRIMARY KEY (id)

);

-- 修改主键(先删除后创建)

ALTER TABLE users DROP PRIMARY KEY;

ALTER TABLE users ADD PRIMARY KEY (id);

-- 删除主键

ALTER TABLE users DROP PRIMARY KEY;

二、外键(Foreign Key)

核心特性

  1. 参照完整性:子表的外键取值,必须与父表的主键值一致;
  2. 级联操作:支持关联数据同步更新、同步删除;
  3. 来源固定:外键必须关联另一张表的主键或唯一键。

核心作用

  1. 保持数据一致:避免产生无关联的孤立数据,主表数据变更时自动维护关联数据;
  2. 实现多表关联:支持一对一、一对多等表间关系,支撑多表联合查询;
  3. 规范数据结构:明确表与表之间的关系,减少数据冗余,方便后期维护。

核心操作

mysql

三、索引(Index)

核心特性

  1. 优化查询性能:通过专用索引结构快速定位数据,缩短查询耗时;
  2. 类型区分:分为唯一索引(不允许重复值)和普通索引(允许重复值)。

常见分类

表格

分类维度 类型 核心特点
数据结构 B+tree 索引 MySQL 默认索引,支持范围、排序、精确查询
Hash 索引 等值查询速度快,不支持范围和排序,仅部分引擎支持
Fulltext 索引 用于文本关键词检索,适配模糊查询
物理存储 聚簇索引 数据与索引存储在一起,单表仅有一个(默认为主键)
二级索引 存储聚簇索引值,查询时需二次获取实际数据
字段特性 主键索引 自带非空、唯一约束,自动生成
普通索引 基础索引,无额外约束,允许重复值
前缀索引 仅索引字符串前几位字符,节省存储空间
字段个数 单列索引 基于单个字段创建,适配单条件查询
联合索引 多个字段组合创建,遵循最左匹配规则

核心操作

mysql

索引分析(EXPLAIN)

搭配查询语句使用,分析索引使用情况,重点关注字段:

  • type:数据访问方式,性能从高到低排序,ALL 代表全表扫描,性能最差;
  • key:实际使用的索引,为 NULL 表示未使用索引;
  • rows:预估扫描的数据行数,数值越小性能越好;
  • Extra:额外执行信息,出现 Using filesort、Using temporary 需要优化。

四、Check 约束(Check Constraint)

核心特性

  1. 自定义数据校验:强制字段内容符合设定的规则条件;
  2. 版本要求:MySQL 8.0.16 及以上版本可正常生效。

核心作用

  1. 保证数据有效:在数据库层面拦截不符合业务规则的数据;
  2. 简化程序逻辑:将数据校验统一交由数据库处理,减少程序重复代码;
  3. 完善数据完整性:与主键、外键搭配,构建完整的数据约束体系。

核心操作

mysql

注意事项

  1. 性能影响:过多、复杂的 Check 约束会降低数据插入、更新的速度;
  2. 兼容性:不同数据库对 Check 约束的支持不同,使用时需适配;
  3. 复杂校验:多字段关联校验可通过触发器实现。

五、存储过程(Stored Procedure)

核心特性

  1. 代码封装:将一组 SQL 语句预编译存储,可重复调用;
  2. 支持业务逻辑:可包含变量定义、条件判断、循环等操作;
  3. 预编译执行:创建时完成编译,调用时直接运行,执行效率更高。

核心优势

  1. 提升性能:减少重复解析 SQL 的开销,复杂逻辑执行更高效;
  2. 增强安全性:可授权用户仅调用存储过程,禁止直接操作数据表;
  3. 简化操作:封装复杂 SQL 和业务逻辑,降低程序开发复杂度;
  4. 减少网络传输:仅传输调用指令和参数,无需传输完整 SQL 语句。

核心操作

mysql

六、触发器(Trigger)

核心特性

  1. 自动执行:在数据插入、更新、删除操作的前后自动触发运行;
  2. 绑定数据表:与指定表关联,仅响应对应表的操作;
  3. 行级触发:每一行数据发生变更时都会执行。

核心分类

表格

触发时机 触发事件 适用场景
BEFORE INSERT 数据插入前校验、设置默认值
BEFORE UPDATE 数据更新前校验、修正内容
BEFORE DELETE 数据删除前校验、前置检查
AFTER INSERT 数据插入后记录日志、同步关联数据
AFTER UPDATE 数据更新后更新统计数据、刷新缓存
AFTER DELETE 数据删除后清理关联数据、记录操作日志

核心操作

mysql

相关推荐
运气好好的3 小时前
mysql数据库日志文件过大如何清理_定期备份与重置日志文件
jvm·数据库·python
2401_831419443 小时前
如何防止MongoDB副本集被误初始化_副本集名称(replSetName)锁定
jvm·数据库·python
阿丰资源4 小时前
基于Spring Boot的美容院管理系统(附源码+数据库+文档)
数据库·spring boot·后端
徐子童4 小时前
复合索引会失效的场景
数据库·mysql·面试题·索引失效
abc123456sdggfd4 小时前
解决Socket图像传输中断问题:基于分块接收与可靠发送的完整教程
jvm·数据库·python
2401_833033624 小时前
SQL中RIGHT JOIN真的很少用吗_数据完整性检查与反向关联分析
jvm·数据库·python
摇滚侠4 小时前
sqlplus “/ as sysdba“ 什么意思
java·数据库·oracle
duangww4 小时前
OPEN SQL去掉文本中间的空格
数据库·abap
zxrhhm4 小时前
MySQL 索引回表(Back to Table)详解
数据库·mysql
m0_741481784 小时前
Vue.js核心基础之响应式系统与虚拟DOM渲染关联机制
jvm·数据库·python