MySQL数据库高级特性

一、核心约束(记住区别)

约束类型 作用 特点
主键(PRIMARY KEY) 唯一标识一行 唯一、非空、一个表只能有一个
外键(FOREIGN KEY) 表间关联 引用另一表的主键,保证一致性
索引(INDEX) 加速查询 可重复、可多列、可唯一
CHECK 约束 列值条件校验 MySQL 8.0.16+ 支持

✅ 口诀:主键唯一非空,外键引用主键,索引加速查询,Check 把关数据


二、索引(重点中的重点)

1. 按数据结构分

类型 特点 场景
B+Tree 范围查询快 大多数查询
Hash 等值查询极快 精确匹配
Fulltext 全文检索 文章、搜索

2. 按物理存储分

  • 聚簇索引:数据按主键排序存储,一个表一个

  • 二级索引:存储主键值,需回表

3. 按字段个数分

  • 单列索引

  • 联合索引:最左前缀原则(必须从左到右使用)

✅ 口诀:B+树最常见,Hash精确快,全文搜文本,聚簇主键排


三、事务(ACID 必背)

特性 含义
原子性 要么全成功,要么全失败
一致性 事务前后数据完整
隔离性 事务间互不干扰
持久性 提交后永久保存

隔离级别(从低到高)

级别 脏读 不可重复读 幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ(默认)
SERIALIZABLE

✅ 口诀:读未提交全乱,读已提交防脏,可重复读防两次,串行化最安全


四、存储过程 vs 触发器

对比项 存储过程 触发器
调用方式 手动 CALL 自动触发
触发事件 INSERT / UPDATE / DELETE
使用场景 复杂逻辑封装 自动化维护、日志、校验

✅ 口诀:过程手动调,触发器自动跑


五、锁(理解即可)

分类 类型 特点
粒度 表锁 锁整个表,并发差
粒度 行锁 锁一行,并发好(InnoDB)
粒度 间隙锁 防幻读
性质 共享锁(读锁) 可并发读
性质 排它锁(写锁) 独占写

✅ 口诀:表锁慢,行锁快,间隙锁防幻读,共享读,排它写


六、存储引擎(重点对比)

引擎 事务 锁粒度 适用场景
InnoDB(默认) 行锁 高并发、写多
MyISAM 表锁 读多写少
Memory 表锁 临时数据、缓存

✅ 口诀:InnoDB 全都要,MyISAM 只读快,Memory 重启丢


七、日志(了解即可)

日志类型 作用
慢日志 记录慢 SQL,用于优化
重做日志(Redo Log) 保证事务持久性,崩溃恢复

✅ 口诀:慢日志抓慢 SQL,重做日志保数据


八、并发问题(高频面试)

问题 描述
更新丢失 后提交覆盖前提交
脏读 读到未提交的数据
不可重复读 同一事务两次读结果不同
幻读 新增/删除导致行数变化

✅ 口诀:丢覆脏未提,两次读不一,幻读行数变


九、常用命令速查

sql

复制代码
-- 索引
CREATE INDEX idx_name ON table(col);
DROP INDEX idx_name ON table;

-- 事务
START TRANSACTION;
COMMIT;
ROLLBACK;

-- 存储过程
CALL proc_name();

-- 触发器(自动执行)
CREATE TRIGGER trigger_name BEFORE INSERT ON table ...

-- 查看索引
SHOW INDEX FROM table;

-- 查看引擎
SHOW ENGINES;
相关推荐
91刘仁德10 分钟前
MySQL 数据库基础操作知识点整理
数据库·mysql·oracle
wuqingshun31415914 小时前
MYSQL默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
这个DBA有点耶16 小时前
导个数据中文全变问号?字符集这事儿真没那么简单
数据库·mysql·代码规范
wuqingshun31415917 小时前
MYSQL中如果发生死锁应该如何解决?
数据库·mysql
是上好佳佳佳呀18 小时前
MySQL 基础:从数据库概念到表结构管理DDL
数据库·mysql
DB哥讲数据库20 小时前
【最新】MySQL9.7安装教程:图文详解(附MySQL安装包)
android·mysql·adb
DB哥讲数据库1 天前
MySQL 8.4 安装教程:超详细图文讲解(附mysql安装包)
linux·数据库·mysql·centos
wefg11 天前
【MySQL】MySQL C API 访问 MySQL
数据库·mysql
L1624761 天前
Zabbix 7.0 LTS 完整部署与运维手册(AlmaLinux 9 + MySQL 8.0 + Nginx)
运维·mysql·zabbix
玖玥拾2 天前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#