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

相关推荐
wjp@0012 小时前
SQL server导出导入数据
运维·服务器·数据库
REDcker3 小时前
OpenSSL:C 语言 TLS 客户端完整示例
c语言·网络·数据库
zly35003 小时前
centos7 mysql 无法被远程连接
数据库·mysql
廿一夏3 小时前
MySql的增删改查
数据库·mysql·dba
瀚高PG实验室3 小时前
HGDB 4.5.8.8开启oracle兼容执行带聚合函数的SQL导致数据库进程被信号11杀死
数据库·sql·oracle·瀚高数据库
炘爚3 小时前
日志系统整体设计步骤以及功能函数梳理
运维·服务器·数据库
_下雨天.3 小时前
PostgreSQL日常维护
数据库·postgresql
神の愛3 小时前
本地连接MySql数据库报错??
数据库·mysql
黑牛儿3 小时前
MySQL 索引实战详解:为什么B+类型的索引查询更快
数据库·mysql