【MySQL】基本复习框架
1. 基础篇
数据库与SQL:什么是数据库、关系型数据库 vs 非关系型数据库、SQL是什么(DDL, DML, DQL, DCL)?
数据类型:整数、浮点数、字符串(CHAR vs VARCHAR)、日期时间类型等。
基本操作:创建/删除数据库和表(CREATE/DROP)、增删改查(INSERT/DELETE/UPDATE/SELECT)。
2. 核心篇
查询深入:
复杂的
SELECT
语句:DISTINCT
,ORDER BY
,LIMIT
。多表连接:
INNER JOIN
,LEFT/RIGHT JOIN
,FULL JOIN
, 以及它们的区别和性能影响。子查询:相关子查询 vs 非相关子查询,
IN
,EXISTS
的使用场景。聚合与分组:
GROUP BY
,HAVING
(与WHERE
的区别),聚合函数(COUNT, SUM, AVG, MAX, MIN)。
函数:字符串函数、数值函数、日期函数、流程控制函数(如
CASE...WHEN
)。
3. 高级特性篇
索引:
索引的原理(为什么能加快查询?)、优缺点。
索引类型:主键索引、唯一索引、普通索引、复合索引、全文索引。
最左前缀原则是什么?如何避免索引失效?
事务:
事务的ACID特性(原子性、一致性、隔离性、持久性)分别是什么?
事务的隔离级别(读未提交、读已提交、可重复读、序列化)以及它们分别解决了哪些并发问题(脏读、不可重复读、幻读)?
BEGIN
,COMMIT
,ROLLBACK
,SAVEPOINT
的使用。
锁机制:
共享锁 vs 排他锁。
行级锁、表级锁、间隙锁。
乐观锁 vs 悲观锁的实现思路。
4. 性能优化篇
EXPLAIN 命令:如何查看和执行计划?关键字段如
type
,key
,rows
,Extra
的含义是什么?SQL语句优化:如何避免使用
SELECT *
, 避免在WHERE
子句中对字段进行函数操作等。数据库设计优化:范式与反范式,选择合适的存储引擎(InnoDB vs MyISAM)。
5. 管理与其他
用户与权限管理(
GRANT
,REVOKE
)。存储过程、触发器、视图。
日志文件(binlog, redolog, undolog)及其作用。