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。