#### 4.5.1.2 mysql 客户端命令

[**mysql**](mysql.html)将您发出的每个 SQL 语句发送到要执行的服务器。还有一组命令[**mysql**](mysql.html)自己解释。有关这些命令的列表，请键入`帮助`要么`\h`在`mysql>`迅速的：

[](<>)

```
mysql> help

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given
               outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing
               binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
query_attributes Sets string parameters (name1 value1 name2 value2 ...)
for the next query to pick up.
ssl_session_data_print Serializes the current SSL session data to stdout
or file.

For server side help, type 'help contents'
```

如果[**mysql**](mysql.html)被调用[`--二进制模式`](mysql-command-options.html#option_mysql_binary-mode)选项，全部[**mysql**](mysql.html)命令被禁用，除了`字符集`和`分隔符`在非交互模式下（用于管道输入[**mysql**](mysql.html)或使用加载`资源`命令）。

每个命令都有长格式和短格式。长格式不区分大小写；简短的形式是。长格式后面可以跟一个可选的分号终止符，但短格式不应该。

在多行中使用短格式命令`/* ... */`不支持评论。短格式命令在单行中工作`/*！... */`版本注释，就像`/*+ ... */`优化器提示注释，存储在对象定义中。如果担心优化器提示注释可能存储在对象定义中，以便在重新加载时转储文件`mysql`将导致执行此类命令，要么调用[**mysql**](mysql.html)与[`--二进制模式`](mysql-command-options.html#option_mysql_binary-mode)选项或使用其他重载客户端[**mysql**](mysql.html).

-   [](<>) [](<>) `帮助 [*`参数`*]`,`\h [*`参数`*]`,`\?[*`参数`*]`,`?[*`参数`*]`

    显示列出可用的帮助消息[**mysql**](mysql.html)命令。

    如果您向`帮助`命令，[**mysql**](mysql.html)使用它作为搜索字符串从 MySQL 参考手册的内容中访问服务器端帮助。有关详细信息，请参阅[第 4.5.1.4 节，“mysql 客户端服务器端帮助”](mysql-server-side-help.html).

-   [](<>) [](<>) `字符集 *`字符集名称`*`,`\C *`字符集名称`*`

    更改默认字符集并发出[`设置名称`](set-names.html)陈述。这使字符集在客户端和服务器上保持同步，如果[**mysql**](mysql.html)在启用自动重新连接的情况下运行（不推荐），因为指定的字符集用于重新连接。

-   [](<>) [](<>) `清除`,`\c`

    清除当前输入。如果您改变主意执行您输入的语句，请使用此选项。

-   [](<>) [](<>) `连接 [*`数据库名称`* [*`主机名`*]]`,`\r [*`数据库名称`* [*`主机名`*]]`

    重新连接到服务器。可以给出可选的数据库名称和主机名参数来指定默认数据库或服务器正在运行的主机。如果省略，则使用当前值。

    如果`连接`命令指定主机名参数，该主机优先于任何[`--dns-srv 名称`](mysql-command-options.html#option_mysql_dns-srv-name)选项在[**mysql**](mysql.html)启动以指定 DNS SRV 记录。

-   [](<>) [](<>) `分隔符 *`字符串`*`,`\d *`字符串`*`

    更改字符串[**mysql**](mysql.html)解释为 SQL 语句之间的分隔符。默认为分号字符 (`;`）。

    分隔符字符串可以指定为不带引号或带引号的参数`分隔符`命令行。可以使用单引号 (`'`), 双引号 (`"`) 或反引号 (\```） 人物。要在带引号的字符串中包含引号，请使用不同的引号字符引用字符串或使用反斜杠 (`\`） 特点。应该避免在引用字符串之外使用反斜杠，因为它是 MySQL 的转义字符。对于未引用的参数，分隔符被读取到第一个空格或行尾。对于带引号的参数，分隔符被读取到该行上匹配的引号。

    [**mysql**](mysql.html)将分隔符字符串的实例解释为任何出现的语句分隔符，带引号的字符串除外。在定义可能出现在其他单词中的分隔符时要小心。例如，如果您将分隔符定义为`X`, 不能用这个词`指数`在声明中。[**mysql**](mysql.html)将此解释为`INDE`后跟分隔符`X`.

    当分隔符被识别时[**mysql**](mysql.html)设置为默认值以外的其他值`;`, 该字符的实例被发送到服务器而不进行解释。但是，服务器本身仍然会解释`;`作为语句分隔符并相应地处理语句。服务器端的这种行为对多语句执行起作用（参见[多语句执行支持](https://dev.mysql.com/doc/c-api/8.0/en/c-api-multiple-queries.html))，以及用于解析存储过程和函数、触发器和事件的主体（参见[第 25.1 节，“定义存储程序”](stored-programs-defining.html)）。

-   [](<>) [](<>) `编辑`,`\e`

    编辑当前输入语句。[**mysql**](mysql.html)检查的值`编辑`和`视觉的`环境变量来确定使用哪个编辑器。默认编辑器是**六**如果两个变量都没有设置。

    这`编辑`命令仅适用于 Unix。

-   [](<>) [](<>) `自我`,`\G`

    将当前语句发送到服务器执行，并以垂直格式显示结果。

-   [](<>) [](<>) `出口`,`\q`

    出口[**mysql**](mysql.html).

-   [](<>) [](<>) `走`,`\g`

    将当前语句发送到要执行的服务器。

-   [](<>) [](<>) `寻呼机`,`\n`

    禁用输出分页。请参阅说明`寻呼机`.

    这`寻呼机`命令仅适用于 Unix。

-   [](<>) [](<>) `注意`,`\t`

    禁用输出复制到 tee 文件。请参阅说明`球座`.

-   [](<>) [](<>) `预警`,`\w`

    在每个语句之后禁用警告显示。

-   [](<>) [](<>) `寻呼机 [*`命令`*]`,`\P [*`命令`*]`

    启用输出分页。通过使用[`--寻呼机`](mysql-command-options.html#option_mysql_pager)调用时的选项[**mysql**](mysql.html)，可以与Unix程序交互浏览或搜索查询结果，例如**较少的**,**更多的**，或任何其他类似的程序。如果您没有为该选项指定任何值，[**mysql**](mysql.html)检查的值`寻呼机`环境变量并将寻呼机设置为该变量。寻呼机功能仅在交互模式下有效。

    输出分页可以通过交互方式启用`寻呼机`命令并禁用`寻呼机`.该命令采用可选参数；如果给定，则分页程序设置为该值。没有参数，寻呼机设置为在命令行上设置的寻呼机，或者`标准输出`如果没有指定寻呼机。

    输出分页仅在 Unix 中有效，因为它使用`弹出（）`Windows 上不存在的函数。对于 Windows，`球座`可以使用选项来保存查询输出，尽管它不如`寻呼机`用于在某些情况下浏览输出。

-   [](<>) [](<>) `打印`,`\p`

    打印当前输入语句而不执行它。

-   [](<>) [](<>) `迅速的 [*`字符串`*]`,`\R [*`字符串`*]`

    重新配置[**mysql**](mysql.html)提示给定的字符串。可以在提示中使用的特殊字符序列将在本节后面介绍。

    如果您指定`迅速的`不带参数的命令，[**mysql**](mysql.html)将提示重置为默认值`mysql>`.

-   [](<>) [](<>) `查询属性 *`姓名`* *`价值`* [*`姓名`* *`价值`* ...]`

    定义适用于发送到服务器的下一个查询的查询属性。有关查询属性的用途和使用的讨论，请参阅[第 9.6 节，“查询属性”](query-attributes.html).

    这`查询属性`命令遵循以下规则：

    -   属性名称和值的格式和引用规则与`分隔符`命令。

    -   该命令最多允许 32 个属性名称/值对。名称和值最长可达 1024 个字符。如果给出的名称没有值，则会发生错误。

    -   如果多个`查询属性`命令在查询执行之前发出，只有最后一个命令适用。发送查询后，[**mysql**](mysql.html)清除属性集。

    -   如果使用相同的名称定义了多个属性，则尝试检索属性值会产生未定义的结果。

    -   用空名称定义的属性不能按名称检索。

    -   如果在重新连接时发生[**mysql**](mysql.html)执行查询，[**mysql**](mysql.html)重新连接后恢复属性，以便可以使用相同的属性再次执行查询。

-   [](<>) [](<>) `放弃`,`\q`

    出口[**mysql**](mysql.html).

-   [](<>) [](<>) `重新散列`,`\#`

    在您输入语句时重建完成哈希以启用数据库、表和列名称完成。（见说明[`--auto-rehash`](mysql-command-options.html#option_mysql_auto-rehash)选项。）

-   [](<>) [](<>) `重置连接`,`\x`

    重置连接以清除会话状态。这包括清除使用`查询属性`命令。

    重置连接的效果类似于[`mysql_change_user()`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-change-user.html)或自动重新连接，除非连接未关闭并重新打开，并且未完成重新身份验证。看[mysql\_改变\_用户（）](https://dev.mysql.com/doc/c-api/8.0/en/mysql-change-user.html)， 和[自动重连控制](https://dev.mysql.com/doc/c-api/8.0/en/c-api-auto-reconnect.html).

    这个例子展示了如何`重置连接`清除会话状态中维护的值：

    ```
    mysql> SELECT LAST_INSERT_ID(3);
    +-------------------+
    | LAST_INSERT_ID(3) |
    +-------------------+
    |                 3 |
    +-------------------+

    mysql> SELECT LAST_INSERT_ID();
    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    |                3 |
    +------------------+

    mysql> resetconnection;

    mysql> SELECT LAST_INSERT_ID();
    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    |                0 |
    +------------------+
    ```

-   [](<>) [](<>) `资源 *`文件名`*`,`\。*`文件名`*`

    读取指定文件并执行其中包含的语句。在 Windows 上，将路径名分隔符指定为`/`要么`\\`.

    引号字符被视为文件名本身的一部分。为获得最佳效果，名称不应包含空格字符。

-   [](<>) [](<>) `ssl_session_data_print [*`文件名`*]`

    获取、序列化和可选地存储成功连接的会话数据。可以给出可选的文件名和参数来指定存储序列化会话数据的文件。如果省略，则将会话数据打印到`标准输出`.

    如果 MySQL 会话配置为重用，来自文件的会话数据将被反序列化并提供给`连接`命令重新连接。当会话被成功重用时，`状态`命令包含一行显示`SSL 会话重用：true`而客户端仍然重新连接到服务器。

-   [](<>) [](<>) `状态`,`\s`

    提供有关连接和您正在使用的服务器的状态信息。如果你正在运行[`--安全更新`](mysql-command-options.html#option_mysql_safe-updates)启用，`状态`还打印[**mysql**](mysql.html)影响您的查询的变量。

-   [](<>) [](<>) `系统 *`命令`*`,`\！*`命令`*`

    使用您的默认命令解释器执行给定的命令。

    在 MySQL 8.0.19 之前，`系统`命令仅适用于 Unix。从 8.0.19 开始，它也适用于 Windows。

-   [](<>) [](<>) `球座 [*`文件名`*]`,`\T [*`文件名`*]`

    通过使用[`- 球座`](mysql-command-options.html#option_mysql_tee)调用时的选项[**mysql**](mysql.html)，您可以记录语句及其输出。屏幕上显示的所有数据都附加到给定文件中。这对于调试目的也非常有用。[**mysql**](mysql.html)在每个语句之后，就在它打印下一个提示之前，将结果刷新到文件中。Tee 功能仅在交互模式下有效。

    您可以使用交互方式启用此功能`球座`命令。如果没有参数，则使用以前的文件。这`球座`文件可以被禁用`注意`命令。执行`球座`再次重新启用日志记录。

-   [](<>) [](<>) `采用 *`数据库名称`*`,`\你 *`数据库名称`*`

    采用*`数据库名称`*作为默认数据库。

-   [](<>) [](<>) `警告`,`\W`

    在每个语句之后启用警告显示（如果有）。

    这里有一些关于`寻呼机`命令：

-   您可以使用它来写入文件，结果只会写入文件：

    ```
    mysql> pager cat > /tmp/log.txt
    ```

    您还可以为要用作寻呼机的程序传递任何选项：

    ```
    mysql> pager less -n -i -S
    ```

-   在前面的示例中，请注意`-S`选项。您可能会发现它对于浏览广泛的查询结果非常有用。有时很难在屏幕上阅读非常宽的结果集。这`-S`选项**较少的**可以使结果集更具可读性，因为您可以使用左箭头和右箭头键水平滚动它。你也可以使用`-S`内互动**较少的**打开和关闭水平浏览模式。有关更多信息，请阅读**较少的**手册页：

    ```
    man less
    ```

-   这`-F`和`-X`选项可以与**较少的**如果输出适合一个屏幕，则使其退出，这在不需要滚动时很方便：

    ```
    mysql> pager less -n -i -S -F -X
    ```

-   您可以指定非常复杂的寻呼机命令来处理查询输出：

    ```
    mysql> pager cat | tee /dr1/tmp/res.txt \
              | tee /dr2/tmp/res2.txt | less -n -i -S
    ```

    在此示例中，该命令会将查询结果发送到安装在两个不同文件系统上的两个不同目录中的两个文件`/dr1`和`/dr2`，但仍使用在屏幕上显示结果**较少的**.

    您还可以结合`球座`和`寻呼机`职能。有一个`球座`文件启用和`寻呼机`调成**较少的**，您可以使用**较少的**程序并且仍然同时将所有内容附加到文件中。Unix 的区别`球座`与`寻呼机`命令和[**mysql**](mysql.html)内置`球座`命令是内置的`球座`即使您没有 Unix 也可以使用**球座**可用的。内置的`球座`还记录屏幕上打印的所有内容，而 Unix**球座**与`寻呼机`没有记录那么多。此外，`球座`可以从内部交互地打开和关闭文件日志记录[**mysql**](mysql.html).当您想要将一些查询记录到文件而不是其他查询时，这很有用。

[](<>)

这`迅速的`命令重新配置默认值`mysql>`迅速的。用于定义提示的字符串可以包含以下特殊序列。

| 选项 | 描述 |
| --- | --- |
| `\C` | 当前连接标识符 |
| `\c` | 为您发出的每个语句递增的计数器 |
| `\D` | 完整的当前日期 |
| `\d` | 默认数据库 |
| `\h` | 服务器主机 |
| `\l` | 当前分隔符 |
| `\m` | 当前时间的分钟数 |
| `\n` | 换行符 |
| `\O` | 三个字母格式的当前月份（Jan, Feb, ...） |
| `\o` | 数字格式的当前月份 |
| `\P` | 上午下午 |
| `\p` | 当前 TCP/IP 端口或套接字文件 |
| `\R` | 当前时间，24 小时军用时间 (0–23) |
| `\r` | 当前时间，标准 12 小时制时间 (1–12) |
| `\S` | 分号 |
| `\s` | 当前时间的秒数 |
| `\T` | 打印一个星号 (`*`) 如果当前会话在事务块内（来自 MySQL 8.0.28） |
| `\t` | 制表符 |
| `\U` | 你的完整`*`用户名`*@*`主机名`*`帐户名称 |
| `\u` | 您的用户名 |
| `\v` | 服务器版本 |
| `\w` | 以三字母格式表示的当前日期（周一、周二、...） |
| `\Y` | 当前年份，四位数 |
| `\y` | 当前年份，两位数 |
| `\_` | 空间 |
| `\` | 一个空格（反斜杠后面有一个空格） |
| `\'` | 单引号 |
| `\"` | 双引号 |
| `\\` | 一个字面`\`反斜杠字符 |
| `\*`x`*` | *`x`*, 对于任何“*`x`*”未在上面列出 |

您可以通过多种方式设置提示：

-   *使用环境变量。*您可以设置`MYSQL_PS1`环境变量到提示字符串。例如：

    ```
    export MYSQL_PS1="(\u@\h) [\d]> "
    ```

-   *使用命令行选项。*您可以设置[`- 迅速的`](mysql-command-options.html#option_mysql_prompt)命令行选项[**mysql**](mysql.html).例如：

    ```
    $> mysql --prompt="(\u@\h) [\d]> "
    (user@host) [database]>
    ```

-   *使用选项文件。*您可以设置`迅速的`中的选项`[mysql]`任何 MySQL 选项文件的组，例如`/etc/my.cnf`或者`.my.cnf`文件在您的主目录中。例如：

    ```
    [mysql]
    prompt=(\\u@\\h) [\\d]>\\_
    ```

    在此示例中，请注意反斜杠是双倍的。如果您使用`迅速的`选项文件中的选项，建议在使用特殊提示选项时使用双反斜杠。允许的提示选项集和选项文件中识别的特殊转义序列集存在一些重叠。（选项文件中转义序列的规则在[第 4.2.2.2 节，“使用选项文件”](option-files.html).) 如果您使用单个反斜杠，重叠可能会给您带来问题。例如，`\s`被解释为空格而不是当前秒值。以下示例显示如何在选项文件中定义提示以将当前时间包含在`*`hh:mm:ss`*>`格式：

    ```
    [mysql]
    prompt="\\r:\\m:\\s> "
    ```

-   *以交互方式设置提示。*您可以使用交互方式更改提示`迅速的`（要么`\R`） 命令。例如：

    ```
    mysql> prompt (\u@\h) [\d]>\_
    PROMPT set to '(\u@\h) [\d]>\_'
    (user@host) [database]>
    (user@host) [database]> prompt
    Returning to default PROMPT of mysql>
    mysql>
    ```
