Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

6.5.1.2 mysql 客户端命令

mysql 将您发出的一条 SQL 语句发送到服务器以执行。还有一个命令集,mysql 自身解释。要获取这些命令的列表,请在 mysql> 提示符下键入 help\h

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 使用 --binary-mode 选项调用,则所有 mysql 命令都将被禁用,除了非交互模式下的 charsetdelimiter(用于输入到 mysql 或使用 source 命令加载的数据)。

每个命令都有长形式和短形式。长形式不区分大小写;短形式区分大小写。长形式可以跟随可选的分号终止符,但短形式不可以。

在多行 /* ... */ 注释中不支持使用短形式命令。短形式命令在单行 /*! ... */ 版本注释中有效,也可以在 /*+ ... */ 优化器提示注释中使用,这些注释将被存储在对象定义中。如果担心优化器提示注释可能被存储在对象定义中,以便在使用 mysql 重新加载时执行这些命令,可以使用 mysql--binary-mode 选项或使用其他重新加载客户端。

  • help [arg], \h [arg], \? [arg], ? [arg]

    显示可用的 mysql 命令的帮助信息。

    如果您提供了 help 命令的参数,mysql 将其用作搜索字符串,以从 MySQL 参考手册的内容中访问服务器端帮助。有关更多信息,请参阅 第 6.5.1.4 节,“mysql 客户端服务器端帮助”

  • charset charset_name, \C charset_name

    更改默认字符集并发出 SET NAMES 语句。这使得客户端和服务器上的字符集保持同步,如果 mysql 在自动重新连接模式下运行(这不是推荐的),因为指定的字符集将用于重新连接。

  • clear, \c

    清除当前输入。如果您改变了执行语句的想法,请使用该命令。

  • connect [db_name [host_name]], \r [db_name [host_name]]

    重新连接到服务器。可选的数据库名称和主机名称参数可以指定默认数据库或服务器的主机。如果省略,将使用当前值。

    如果 connect 命令指定了主机名参数,那么该主机将优先于在 --dns-srv-name 选项中指定的 DNS SRV 记录。

  • 分隔符 str, \d str

    更改 mysql 解释为 SQL 语句之间的分隔符。默认是分号字符 (;)。

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

    mysql 将分隔符字符串解释为语句分隔符,除了在引用的字符串中。请小心定义可能出现在其他单词中的分隔符。例如,如果您将分隔符定义为 X,那么无法在语句中使用单词 INDEXmysql 将其解释为 INDE 后跟分隔符 X

    mysql 识别的分隔符设置为默认的 ; 以外的其他字符时,服务器将该字符发送到服务器而不进行解释。然而,服务器本身仍将 ; 解释为语句分隔符,并相应地处理语句。这在服务器端的行为对于多语句执行(见 多语句执行支持)和解析存储过程、触发器和事件的主体(见 第 27.1 节,“定义存储程序”)中起作用。

  • 编辑, \e

    编辑当前输入语句。mysql 检查 EDITORVISUAL 环境变量的值,以确定使用哪个编辑器。默认编辑器是 vi,如果两个变量都未设置。

    编辑命令仅在 Unix 中有效。

  • ego, \G

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

  • exit, \q

    退出 mysql

  • go, \g

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

  • nopager, \n

    禁用输出分页。见 pager 的描述。

    nopager 命令仅在 Unix 中有效。

  • notee, \t

    禁用输出复制到 tee 文件。见 tee 的描述。

  • 不显示警告, \w

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

  • 分页器 [命令], \P [命令]

    启用输出分页。在交互模式下,使用 Unix 程序如 lessmore 或其他类似程序浏览或搜索查询结果。

    可以使用 pager 命令启用输出分页,并使用 nopager 禁用。该命令接受可选参数;如果提供参数,则将分页程序设置为该参数。否则,将使用命令行指定的分页程序或 stdout

    输出分页仅在 Unix 中工作,因为它使用 popen() 函数,该函数在 Windows 中不存在。对于 Windows,可以使用 tee 选项来保存查询输出,尽管它不如 pager 方便浏览输出。

  • 打印, \p

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

  • prompt [str], \R [str]

    重新配置 mysql 提示符为给定的字符串。该部分后面将描述可以在提示符中使用的特殊字符序列。

    如果您指定了 prompt 命令而不带参数,mysql 将提示符重置为默认的 mysql>

  • 查询属性 名称 [名称 ...]

    定义应用于下一个服务器查询的查询属性。有关查询属性的目的和使用,请参阅 第 11.6 节,“查询属性”

    query_attributes 命令遵循以下规则:

    • 属性名称和值的格式和引号规则与 delimiter 命令相同。

    • 该命令允许最多 32 个属性名称/值对。名称和值最多可以是 1024 个字符长。如果名称没有值,将发生错误。

    • 如果在查询执行前发出多个 query_attributes 命令,只有最后一个命令生效。在发送查询后,mysql 将清除属性集。

    • 如果多个属性定义了相同的名称,尝试检索属性值的结果未定义。

    • 具有空名称的属性不能按名称检索。

    • 如果在 mysql 执行查询时发生重新连接,mysql 将在重新连接后恢复属性,以便可以使用相同的属性重新执行查询。

  • 退出, \q

    退出 mysql

  • 重建哈希, #

    重新构建启用数据库、表名和列名完成的哈希,而您输入语句时。(见 --auto-rehash 选项的描述。)

  • 重置连接, \x

    重置连接以清除会话状态。这包括清除使用 query_attributes 命令定义的当前查询属性。

    重置连接的效果类似于 mysql_change_user() 或自动重新连接,除了连接不关闭和重新打开,且不进行重新身份验证。见 mysql_change_user()自动重新连接控制

    以下示例显示如何 resetconnection 清除会话状态中的值:

    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 |
    +------------------+
  • source 文件名, \. 文件名

    读取指定文件并执行其中的语句。在 Windows 上,指定路径名分隔符为 /\\

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

  • ssl_session_data_print [文件名]

    获取、序列化并可选地存储成功连接的会话数据。可选文件名和参数可以指定用于存储序列化会话数据的文件。如果省略,会话数据将打印到 stdout

    如果 MySQL 会话配置为重用,来自文件的会话数据将被反序列化并提供给 connect 命令以重新连接。当会话成功重用时,status 命令将包含一行显示 SSL 会话重用:true,同时客户端保持与服务器的连接。

  • 状态, \s

    提供关于连接和您使用的服务器的状态信息。如果您使用 --safe-updates 启用,status 也将打印 mysql 变量的值,这些变量影响您的查询。

  • 系统 命令, \! 命令

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

  • tee [文件名], \T [文件名]

    使用 --tee 选项时,您可以记录语句和其输出。所有显示在屏幕上的数据将被追加到给定的文件中。这对于调试目的也非常有用。mysql 在每个语句后将结果刷新到文件中,然后打印下一个提示符。Tee 功能仅在交互模式下工作。

    您可以使用 tee 命令交互式启用该功能。没有参数时,使用前一个文件。如果禁用日志记录,可以使用 notee 命令。执行 tee 命令再次启用日志记录。

  • 使用 数据库名, \u 数据库名

    使用 数据库名 作为默认数据库。

  • 警告, \W

    启用每个语句后的警告显示(如果有任何警告)。

以下是 pager 命令的一些提示:

  • 你可以使用它将结果写入文件,而结果只写入文件:

    mysql> pager cat > /tmp/log.txt

    你也可以传递任何选项给要使用的 pager 程序:

    mysql> pager less -n -i -S
  • 在前面的示例中,请注意 -S 选项。你可能会发现它非常有用,以便浏览宽查询结果。有时,非常宽的结果集难以在屏幕上阅读。-S 选项可以使结果集变得更加可读,因为你可以使用左箭头和右箭头键水平滚动。你也可以在 less 中交互式地使用 -S 选项来打开和关闭水平浏览模式。有关更多信息,请阅读 less 手册页:

    man less
  • 可以使用 -F-X 选项与 less 一起使用,以便在输出适合一个屏幕时退出:

    mysql> pager less -n -i -S -F -X
  • 你可以指定非常复杂的 pager 命令来处理查询输出:

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

    在这个示例中,命令将查询结果发送到两个不同的文件系统上两个不同的目录中的两个文件中,同时仍然使用 less 显示结果。

你也可以组合 teepager 函数。启用 tee 文件并将 pager 设置为 less,这样你可以使用 less 程序浏览结果,同时将所有内容追加到文件中。Unix teepager 命令的区别在于,内置的 tee 命令即使没有 Unix tee 也可以工作。内置的 tee 命令也记录了屏幕上的所有内容,而 Unix teepager 不记录那么多。此外,tee 文件日志记录可以从 mysql 中交互式地打开和关闭。

The prompt 命令重新配置默认的 mysql> 提示符。定义提示符的字符串可以包含以下特殊序列。

Option Description
\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 如果当前会话在事务块中,打印一个星号 (*)
\t 一个制表符
\U

你的完整 user_name@host_name 帐户名称

\u 你的用户名
\v 服务器版本
\w 当前星期三字母格式(Mon, Tue, …)
\Y 当前四位年份
\y 当前两位年份
\_ 空格
空格(反斜杠后跟空格)
\' 单引号
\" 双引号
\\ 反斜杠字符
\x

x, 对于上述未列出的任何 x

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

  • 使用环境变量。 您可以将 MYSQL_PS1 环境变量设置为提示符字符串。例如:

    export MYSQL_PS1="(\u@\h) [\d]> "
  • 使用命令行选项。 您可以在命令行上使用 --prompt 选项来 mysql。例如:

    $> mysql --prompt="(\u@\h) [\d]> "
    (user@host) [database]>
  • 使用选项文件。 您可以在 MySQL 选项文件的 [mysql] 组中设置 prompt 选项,例如 /etc/my.cnf 或 home 目录下的 .my.cnf 文件。例如:

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

    在这个示例中,请注意反斜杠被双倍。 如果您在选项文件中使用 prompt 选项设置提示符,建议双倍反斜杠,以避免特殊提示选项和选项文件中的转义序列之间的冲突。(选项文件中的转义序列规则在 第 6.2.2.2 节,“使用选项文件” 中列出。)例如,\s 将被解释为空格,而不是当前秒数。以下示例显示如何在选项文件中定义提示符,以包括当前时间在 hh:mm:ss> 格式中:

    [mysql]
    prompt="\\r:\\m:\\s> "
  • 交互式设置提示符。 您可以使用 prompt(或 \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>