MySQL Shell 可以执行 SQL、JavaScript 或 Python 代码,但一次只能使用一种语言。主动模式决定了执行语句的处理方式:
如果使用 SQL 模式,语句将作为 SQL 处理,这意味着它们将被发送到 MySQL 服务器执行。
如果使用 JavaScript 模式,语句将作为 JavaScript 代码处理。
如果使用 Python 模式,语句将作为 Python 代码处理。
从版本 8.0.18 开始,MySQL Shell 使用 Python 3。对于包括系统支持的 Python 3 安装的平台,MySQL Shell 使用可用的最新版本,最低支持的 Python 3.4.3 版本。对于不包含 Python 3 的平台,MySQL Shell 捆绑了 Python 3.7.4。MySQL Shell 保持与 Python 2.6 和 Python 2.7 的代码兼容性,因此如果您需要这些旧版本之一,您可以使用适当的 Python 版本从源代码构建 MySQL Shell。
当以交互模式运行 MySQL Shell 时,通过输入以下命令激活特定语言:\sql
,
\js
, \py
。
以批处理模式运行 MySQL Shell 时,通过传递以下任何命令行选项来激活特定语言:
--js
,
--py
或
--sql
. 如果未指定,则默认模式为 JavaScript。
使用 MySQL Shell 将文件内容
code.sql
作为 SQL 执行。
$> mysqlsh --sql < code.sql
使用 MySQL Shell 将文件内容
code.js
作为 JavaScript 代码执行。
$> mysqlsh < code.js
使用 MySQL Shell 将文件内容
code.py
作为 Python 代码执行。
$> mysqlsh --py < code.py
从 MySQL Shell 8.0.16 开始,您可以在另一种语言处于活动状态时执行单个 SQL 语句,方法是输入
\sql
紧跟 SQL 语句的命令。例如:
mysql-py> \sql select * from sakila.actor limit 3;
SQL 语句不需要任何额外的引号,语句分隔符是可选的。该命令仅在一行中接受单个 SQL 查询。使用这种格式,MySQL Shell 不会像您输入
\sql
命令那样切换模式。SQL 语句执行后,MySQL Shell 仍处于 JavaScript 或 Python 模式。
从 MySQL Shell 8.0.18 开始,您可以在任何语言处于活动状态时执行操作系统命令,方法是输入
\system
或\!
命令,紧接着输入要执行的命令。例如:
mysql-py> \system echo Hello from MySQL Shell!
MySQL Shell 显示操作系统命令的输出,如果无法执行命令则返回错误。