Mysql8新特性
字符集
- 默认字符集 改为 utf8mb4(之前是 latin1 → utf8)。
- 支持完整的 Unicode,包括 emoji 😊。
存储引擎
- 系统表全部使用 InnoDB
- 以前是 MyISAM,8.0 全部迁移到 InnoDB,保证事务性和一致性。
SQL 功能增强
-
窗口函数 (Window Functions)
- 例如:
ROW_NUMBER()
,RANK()
,DENSE_RANK()
,LEAD()
,LAG()
等。
SELECT name, score,
RANK() OVER (PARTITION BY class_id ORDER BY score DESC) AS rank
FROM student; - 例如:
-
公用表表达式 (CTE, Common Table Expressions)
- 支持
WITH
递归查询。
WITH RECURSIVE cte AS (
SELECT 1 AS n
UNION ALL
SELECT n+1 FROM cte WHERE n < 5
)
SELECT * FROM cte; - 支持