Code前端首页关于Code前端联系我们

MySQL 8.1.0正式发布!

terry 2年前 (2023-09-26) 阅读数 46 #后端开发

MySQL 8.0在五年前发布了第一个GA版本,此后一直在该版本中进行更新,而没有更新主要版本。近日,MySQL正式发布了MySQL 8.1.0和MySQL 8.0.34,分别代表创新版本和长期支持版本。

MySQL 8.1.0正式发布!

新版本中与SQL相关的改进包括保存执行计划输出以及使用系统函数作为字符字段的默认值。

MySQL 版本 8.1.0 支持将 EXPLAIN FORMAT=JSON 命令的输出保存为用户变量。语法如下:

EXPLAIN FORMAT=JSON INTO var_name 
explainable_stmt

变量的值是一个 JSON 文档,可以使用 JSON 函数(例如 JSON_EXTRACT())进一步处理。

其中,INTO 子句仅支持 FORMAT=JSON 选项,explaination_format 系统变量设置的 JSON 格式无效。如果不执行explainable_stmt,则用户变量的值不会更新。

INTO 子句不支持 EXPLAIN ANALYZE 和 EXPLAIN FOR CONNECTION 语句。

可以在官方文档中找到EXPLAIN命令的详细说明。

https://dev.mysql.com/doc/refman/8.1/en/explain.html#explain-execution-plan

MySQL 8.1.0 和 MySQL 8.0.34 支持使用 CURRENT_USER ( ) 、SESSION_USER()、USER()和SYSTEM_USER()是VARCHAR和TEXT字段的默认值。例如:

mysql> SELECT CURRENT_USER();
+-------------------+
| CURRENT_USER()    |
+-------------------+
|  sakila@localhost |
+-------------------+
1 row in set (0.00 sec)

mysql> CREATE TABLE t (
     >  c1 VARCHAR(288) DEFAULT (USER()),
     >  c2 VARCHAR(288) DEFAULT (CURRENT_USER()),
     >  c3 VARCHAR(288) DEFAULT (SESSION_USER()), 
     >  c4 VARCHAR(288) DEFAULT (SYSTEM_USER())
     > );
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO t VALUES ROW();
Query OK, 1 row affected (0.01 sec)

mysql> TABLE t;
+-------------------+-------------------+-------------------+-------------------+
| c1                | c2                | c3                | c4                |
+-------------------+-------------------+-------------------+-------------------+
|  sakila@localhost |  sakila@localhost |  sakila@localhost |  sakila@localhost |
+-------------------+-------------------+-------------------+-------------------+
1 row in set (0.00 sec)

如果我们使用SHOW CREATE TABLE和SHOW COLUMNS命令查看表的结构,我们就可以看到定义中的函数。您还可以查看 INFORMATION_SCHEMA.COLUMNS 系统表的 COLUMN_DEFAULT 字段中的默认值。

为了确保可以存储最大可能的数据长度,请指定至少 288 个字符的字段(用户名 255 个字符,主机名 32 个字符,加上 @ 符号)。在定义CHAR类型字段时,不建议将其用作上述系统函数的默认值,因为这可能会导致错误或数据丢失。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门