前言
MySQL 作为主流关系型数据库,是后端开发与数据管理的核心技术。从基础语法到性能优化,从单表操作到分布式架构,其知识体系贯穿开发全流程。本文聚焦核心知识点,从数据类型、存储引擎等基础概念,到索引优化、事务管理、分库分表等进阶内容,系统梳理关键技术点。通过简明解析与实战示例,帮助开发者快速构建知识框架,解决实际开发中的查询优化、锁冲突、运维管理等问题,无论是新手入门还是进阶提升,均可从中获取实用经验。
一、基础架构与核心概念
1.1 体系结构
MySQL体系结构分为Server层和存储引擎层:
- Server层:处理SQL解析、优化、缓存、事务管理(包含Query Cache已废弃)
- 存储引擎层:负责数据存储(如InnoDB、MyISAM)
- 连接层:处理客户端连接、权限验证
1.2 数据类型
数值类型:
- 整数:TINYINT (1-255)、INT (11)、BIGINT (20)
- 浮点数:FLOAT、DOUBLE
- 精确小数:DECIMAL (M,D)(如 DECIMAL (10,2) 表示总 10 位,小数 2 位)
字符串类型:
- 定长:CHAR (20)(不足补空格,效率高)
- 变长:VARCHAR (20)(动态分配空间)
- 大文本:TEXT(64KB)、LONGTEXT(4GB)
日期时间:
- DATE(YYYY-MM-DD)
- DATETIME(YYYY-MM-DD HH:MM:SS,范围 1001-9999)
- TIMESTAMP(1970-2038,自动更新当前时间)
1.3 存储引擎对比
特性 | InnoDB(默认) | MyISAM | Memory |
---|---|---|---|
事务支持 | 支持 (ACID) | 不支持 | 不支持 |
锁粒度 | 行锁 | 表锁 | 表锁 |
全文索引 | 支持 (5.6+) | 支持 | 不支持 |
适用场景 | OLTP(写多读少) | OLAP(读多写少) | 临时数据 |
二、SQL 语法核心
2.1 DDL(数据定义语言)
-- 创建表(InnoDB,自增主键,外键)
CREATE TABLE users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age TINYINT CHECK (age > 0), -- 约束(MySQL 8.0+支持)
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (dept_id) REFERENCES departments(id)
);
-- 修改表
ALTER TABLE users ADD COLUMN email VARCHAR(100);
ALTER TABLE users DROP COLUMN phone;
2.3 DQL(数据查询语言)
多表连接:
-- 内连接(等价INNER JOIN)
SELECT u.name, o