MySQL 8 教程

MySQL - 主页 MySQL - 简介 MySQL - 功能 MySQL - 版本 MySQL - 变量 MySQL - 安装 MySQL - 管理 MySQL - PHP 语法 MySQL - Node.js 语法 MySQL - Java 语法 MySQL - Python 语法 MySQL - 连接 MySQL - Workbench

MySQL 8 数据库

MySQL - 创建数据库 MySQL - 删除数据库 MySQL - 选择数据库 MySQL - 显示数据库 MySQL - 复制数据库 MySQL - 数据库导出 MySQL - 数据库导入 MySQL - 数据库信息

MySQL 8 用户

MySQL - 创建用户 MySQL - 删除用户 MySQL - 显示用户 MySQL - 更改密码 MySQL - 授予权限 MySQL - 显示权限 MySQL - 撤销权限 MySQL - 锁定用户账户 MySQL - 解锁用户账户

MySQL 8 表

MySQL - 创建表 MySQL - 显示表 MySQL - 修改表 MySQL - 重命名表 MySQL - 克隆表 MySQL - 截断表 MySQL - 临时表 MySQL - 修复表 MySQL - 描述表 MySQL - 添加/删除列 MySQL - 显示列 MySQL - 重命名列 MySQL - 表锁定 MySQL - 删除表 MySQL - 派生表

MySQL 8 查询

MySQL - 查询 MySQL - 约束 MySQL - INSERT 插入查询 MySQL - SELECT 查询 MySQL - UPDATE 更新查询 MySQL - DELETE删除查询 MySQL - REPLACE 替换查询 MySQL - 忽略插入 MySQL - 重复键更新时插入 MySQL - 插入到另一个表语句

MySQL 8 视图

MySQL - 创建视图 MySQL - 更新视图 MySQL - 删除视图 MySQL - 重命名视图

MySQL 8 索引

MySQL - 索引 MySQL - 创建索引 MySQL - 删除索引 MySQL - 显示索引 MySQL - 唯一索引 MySQL - 聚集索引 MySQL - 非聚集索引

MySQL 运算符和子句

MySQL - Where 子句 MySQL - Limit 子句 MySQL - Distinct 子句 MySQL - Order By 子句 MySQL - Group By 子句 MySQL - Having 子句 MySQL - AND 运算符 MySQL - OR 或运算符 MySQL - LIKE 运算符 MySQL - IN 运算符 MySQL - ANY 运算符 MySQL - Exists 运算符 MySQL - NOT 运算符 MySQL - NOT EQUAL 运算符 MySQL - IS NULL 运算符 MySQL - IS NOT NULL 运算符 MySQL - Between 运算符 MySQL - UNION 运算符 MySQL - UNION 与 UNION ALL MySQL - MINUS 运算符 MySQL - INTERSECT 运算符 MySQL - INTERVAL 运算符

MySQL 连接

MySQL - 使用连接 MySQL - Inner Join 内连接 MySQL - LEFT JOIN 左连接 MySQL - RIGHT JOIN 右连接 MySQL - CROSS JOIN 交叉连接 MySQL - 全连接 MySQL - 自连接 MySQL - Delete Join 删除连接 MySQL - UPDATE JOIN 更新连接 MySQL - 联合 vs 连接

MySQL 键

MySQL - UNIQUE 唯一键 MySQL - PRIMARY KEY 主键 MySQL - FOREIGN KEY 外键 MySQL - 复合键 MySQL - 备用键

MySQL 触发器

MySQL - 触发器 MySQL - 创建触发器 MySQL - 显示触发器 MySQL - 删除触发器 MySQL - 插入前触发器 MySQL - 插入后触发器 MySQL - 更新前触发器 MySQL - 更新后触发器 MySQL - 删除前触发器 MySQL - 删除后触发器

MySQL 8 数据类型

MySQL - 数据类型 MySQL - VARCHAR MySQL - BOOLEAN MySQL - ENUM 枚举 MySQL - DECIMAL 十进制 MySQL - INT 整数 MySQL - FLOAT 浮点数 MySQL - BIT 位 MySQL - TINYINT 微小整数 MySQL - BLOB 二进制大对象 MySQL - SET 集合

MySQL 正则表达式

MySQL - 正则表达式 MySQL - RLIKE 运算符 MySQL - NOT LIKE 运算符 MySQL - NOT REGEXP 运算符 MySQL - regexp_instr() 函数 MySQL - regexp_like() 函数 MySQL - regexp_replace() 函数 MySQL - regexp_substr() 函数

MySQL 全文搜索

MySQL - 全文搜索 MySQL - 自然语言全文搜索 MySQL - 布尔全文搜索 MySQL - 查询扩展全文搜索 MySQL - ngram 全文解析器

MySQL8 函数和运算符

MySQL - 日期和时间函数 MySQL - 算术运算符 MySQL - 数字函数 MySQL - 字符串函数 MySQL - 聚合函数

MySQL 8 其他概念

MySQL - NULL 值 MySQL - 事务 MySQL - 序列 MySQL - 处理重复项 MySQL - SQL 注入 MySQL - 子查询 MySQL - 注释 MySQL - 检查约束 MySQL - 存储引擎 MySQL - 将表导出为 CSV 文件 MySQL - 将 CSV 文件导入数据库 MySQL - UUID MySQL - 通用表表达式 MySQL - 级联删除 MySQL - Upsert 操作 MySQL - 水平分区 MySQL - 垂直分区 MySQL - 游标 MySQL - 存储函数 MySQL - SIGNAL 异常处理 MySQL - RESIGNAL 异常处理 MySQL - 字符集 MySQL - 排序规则 MySQL - 通配符 MySQL - 别名 MySQL - ROLLUP 超级聚合 MySQL - 当前日期 MySQL - 字面量 MySQL - 存储过程 MySQL - EXPLAIN 语句 MySQL - JSON MySQL - 标准差 MySQL - 查找重复记录 MySQL - 删除重复记录 MySQL - 选择随机记录 MySQL - 显示进程列表 MySQL - 更改列类型 MySQL - 重置自动增量 MySQL - Coalesce() 函数

MySQL 8 实用资源

MySQL - 实用函数 MySQL - 语句参考 MySQL - 快速指南 MySQL - 实用资源 MySQL - 讨论


MySQL - 版本

任何产品都会引入版本,以便通过添加额外功能、删除不必要的功能、修复错误等进行升级。随着技术的发展,版本控制过程对于提高产品效率至关重要。

产品通常在完成 alpha 测试、beta 测试、gamma 测试等测试阶段后发布,所有这些测试都通过后才会正式投入生产。

安装 MySQL 时,我们必须选择要安装的版本及其分发格式。 MySQL 的最新版本是 8.0,其次要版本号是 8.0.34。安装 MySQL 服务器有两种方式:开发版和正式版。

开发版包含所有最新功能,但不建议用于生产环境。正式版更像是一个生产版本,可以在生产环境中稳定使用。

MySQL 版本

MySQL 是一款快速、易于使用的关系型数据库管理系统 (RDBMS),广泛应用于各种规模的企业。它由瑞典公司 MySQL AB 开发、销售和支持。 MySQL 于 1995 年 5 月 23 日首次内部发布,在 Oracle 收购 Sun Microsystems 之前,共发布了 3.19 至 5.1 版本。

5.1 版本

MySQL 5.1 版本于 2008 年 11 月 27 日发布,新增了事件调度程序、分区、插件 API、基于行的复制、服务器日志表等功能。

但是,5.1 版本包含 20 个已知错误,这些错误会导致错误结果,此外还有 5.0 版本中的 35 个错误。不过,截至 5.1.51 版本,几乎所有错误都已修复。此外,MySQL 5.1 和 6.0(处于 alpha 测试阶段)在数据仓库方面性能不佳,这可能部分是由于其无法利用多个 CPU 核心来处理单个查询。

版本 5.5

MySQL Server 5.5 于 2010 年 12 月发布,是一个通用版本。此版本中的改进功能包括:-

  • 默认存储引擎是 InnoDB,它改进了 I/O 子系统,支持事务和引用完整性约束。

  • 改进了 SMP 支持

  • 半同步复制。

  • 根据 SQL 标准添加了 SIGNAL 和 RESIGNAL 语句。

  • 支持补充 Unicode 字符集 utf16、utf32 和utf8mb4。

  • 新增用户自定义分区选项。

5.6 版

MySQL 5.6 正式版于 2013 年 2 月发布。此版本的新功能包括:

  • 查询优化器性能更高效。

  • InnoDB 事务吞吐量更高。

  • 新的 NoSQL 风格 Memcached API。

  • 改进了查询大型表的分区功能。

  • 更好地管理大型表。

  • TIMESTAMP 列类型可正确存储毫秒。

  • 改进了复制功能。

  • 通过 PERFORMANCE_SCHEMA 扩展可用数据,实现更好的性能监控。

  • InnoDB 存储引擎还支持全文搜索,并提升了组提交性能。

5.7 版

MySQL 5.7 于 10 月正式发布2015 年。MySQL 5.7、MySQL 5.7.8 及更高版本的次要版本,将于 2015 年 8 月之前支持 RFC 7159 定义的原生 JSON 数据类型。

版本 8.0

MySQL Server 8.0 于 2018 年 4 月发布,并新增了一些改进的功能。目前,MySQL 8.0 的次要版本号从 8.0.0 到 8.0.34。之前的 MySQL Server 8.0.0-dmr(作为开发里程碑版本)于 2016 年 9 月 12 日发布。

MySQL 8.0 新增功能

MySQL 的最新版本是 8.0。以下功能是一些新增的功能:

  • 数据字典 − 在以前的 MySQL 版本中,字典数据存储在元数据文件和非事务表中。 MySQL 现在集成了一个事务数据字典,用于存储数据库对象的相关信息。

  • 原子数据定义语言 (Atomic DDL) 语句 − 原子 DDL 语句将与 DDL 操作相关的数据字典更新、存储引擎操作和二进制日志写入组合成一个原子事务。

  • 升级过程 − 以前,安装新版本的 MySQL 后,MySQL 服务器会在下次启动时自动升级数据字典表,之后 DBA 需要手动调用 mysql_upgrade 来升级 mysql 架构中的系统表以及其他架构(例如"sys"架构和用户架构)中的对象。

    从 MySQL 8.0.16 开始,服务器还会执行之前由 mysql_upgrade 处理的任务。此外,服务器还会更新帮助表的内容。新的 --upgrade 服务器选项可控制服务器如何执行自动数据字典和服务器升级操作。

  • 会话重用 − MySQL 服务器现在默认支持 SSL 会话重用,并可通过超时设置来控制服务器维护会话缓存的时间,该缓存确定了允许客户端请求重用新连接的时间段。所有 MySQL 客户端程序都支持会话重用。此外,C 应用程序现在可以使用 C API 功能来实现加密连接的会话重用。

  • 安全和账户管理 − 安全性得到极大提升,DBA 在账户管理方面也拥有更大的灵活性。

  • 资源管理 − MySQL 现在支持创建和管理资源组,并允许将服务器内运行的线程分配给特定组,以便线程根据组可用的资源执行。

  • 表加密管理 − 现在可以通过定义和强制执行加密默认值来全局管理表加密。

  • InnoDB 增强功能 − 添加了多项 InnoDB 增强功能,例如自动递增计数器值、索引树损坏、mem-cached 插件、InnoDB_deadlock_detect、表空间加密功能、存储引擎、InnoDB_dedicated_server、在临时表空间中创建临时表, zlib 库等。

  • 字符集支持 − 默认字符集已从 latin1 更改为 utf8mb4。utf8mb4 字符集包含几个新的排序规则,包括 utf8mb4_ja_0900_as_cs,这是 MySQL 中第一个适用于 Unicode 的日语特定排序规则。

  • JSON 增强功能 − 对 MySQL 的 JSON 功能进行了多项增强和添加。

  • 数据类型支持 − MySQL 现在支持在数据类型规范中使用表达式作为默认值。这包括使用表达式作为 BLOB、TEXT、GEOMETRY 和 JSON 数据类型的默认值,而这些数据类型以前根本无法分配默认值。

  • 优化器 − 优化器也以各种方式得到了增强。

  • 改进的哈希连接性能 − MySQL 8.0.23 重新实现了用于哈希连接的哈希表,从而提高了哈希连接性能。

  • 通用表表达式 − MySQL 现在支持通用表表达式,包括非递归和递归表达式。

  • 窗口函数 − MySQL 现在支持窗口函数,对于查询中的每一行,使用与该行相关的行执行计算。

  • 横向派生表 − 现在可以在派生表前面加上 LATERAL 关键字,以指定允许在同一 FROM 子句中引用(依赖)先前表的列。

  • 单表 DELETE 语句中的别名 − 在 MySQL 8.0.16 及更高版本中,单表 DELETE 语句支持使用表别名。

  • 正则表达式支持 − 以前,MySQL 使用 Henry Spencer 正则表达式库来支持正则表达式运算符。

  • 内部临时表 − TempTable 存储引擎取代 MEMORY 存储引擎成为内存内部临时表的默认引擎。

  • 日志记录 − 新版本中日志记录过程也得到了改进。

除此之外,新版本的 MySQL 还添加了许多其他功能。

MySQL 8.0 中已弃用的功能

以下列出了 MySQL 8.0 中已弃用的部分功能,这些功能可能会在未来的版本中删除。应用程序可以使用文中提到的几种替代方案。

  • utf8mb3 字符集已弃用。请使用 utf8mb4 字符集。

  • ucs2、macroman 以及 macce、dec、hp8 也已弃用。您应该使用 utf8mb4。

  • 用户定义的排序规则已弃用。

  • sha256_password 已弃用。

  • validate_password 的插件形式仍然可用,但已弃用。

  • ALTER TABLESPACE 和 DROP TABLESPACE 语句的 ENGINE 子句已弃用。

  • PAD_CHAR_TO_FULL_LENGTH SQL 模式已弃用。

  • 对于 FLOAT 和 DOUBLE 类型(以及任何同义词)的列,AUTO_INCREMENT 支持已弃用。

  • 对于 FLOAT、DOUBLE 和 DECIMAL 类型(以及任何同义词)

  • FLOAT(M,D) 和 DOUBLE(M,D) 语法已弃用。

  • 数值数据类型的 ZEROFILL 属性和整数数据类型的显示宽度属性已弃用。

  • BINARY 属性已弃用。但是,使用 BINARY 指定数据类型或字符集的方式保持不变。

  • ASCII 和 UNICODE 已弃用(MySQL 8.0.28 及更高版本)。在这两种情况下,请改用 CHARACTER SET。