mysql将您发出的每个 SQL 语句发送到要执行的服务器。还有一组mysql自己解释的命令。要获得这些命令的列表,请在
提示符
help
或
\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命令都将被禁用
,但在非交互模式下(对于通过管道传输到mysql
或使用命令加载的输入)。
--binary-mode
charset
delimiter
source
每个命令都有长格式和短格式。长格式不区分大小写;简短的形式是。长格式后面可以跟一个可选的分号终止符,但短格式不应该。
/*
... */
不支持
在多行注释中使用短格式命令。短格式命令在单行/*! ... */
版本注释中起作用,就像/*+ ... */
存储在对象定义中的优化器提示注释一样。如果担心优化器提示注释可能存储在对象定义中,以便在重新加载时转储文件
mysql
会导致执行此类命令,请使用该
选项调用mysql--binary-mode
或使用mysql以外的重新加载客户端。
help [
, , ,arg
]\h [
arg
]\? [
arg
]? [
arg
]显示一条帮助消息,列出可用的 mysql命令。
如果您为该
help
命令提供一个参数,mysql会将其用作搜索字符串以从 MySQL 参考手册的内容中访问服务器端帮助。有关详细信息,请参阅 第 4.5.1.4 节,“mysql 客户端服务器端帮助”。charset
,charset_name
\C
charset_name
更改默认字符集并发出
SET NAMES
语句。如果mysql在启用自动重新连接的情况下运行(不推荐),这将使字符集在客户端和服务器上保持同步,因为指定的字符集用于重新连接。清除当前输入。如果您改变主意执行正在输入的语句,请使用此选项。
connect [
,db_name
[host_name
]]\r [
db_name
[host_name
]]重新连接到服务器。可以提供可选的数据库名称和主机名参数以指定默认数据库或服务器运行的主机。如果省略,则使用当前值。
如果该
connect
命令指定了主机名参数,则该主机优先 于mysql启动时指定 DNS SRV 记录的 任何--dns-srv-name
选项 。更改mysql解释为 SQL 语句之间分隔符的字符串。默认值为分号 (
;
)。分隔符字符串可以在
delimiter
命令行上指定为不带引号或带引号的参数。可以使用单引号 ('
)、双引号 ("
) 或反引号 (`
) 字符来引用。要在带引号的字符串中包含引号,请使用不同的引号字符将字符串引号或使用反斜杠 (\
) 字符对引号进行转义。应避免在引号字符串之外使用反斜杠,因为它是 MySQL 的转义字符。对于未加引号的参数,定界符被读取到第一个空格或行尾。对于带引号的参数,分隔符被读取到行中匹配的引号。mysql将分隔符字符串的实例解释为它出现的任何地方的语句分隔符,引号字符串中除外。在定义可能出现在其他单词中的分隔符时要小心。例如,如果将分隔符定义为
X
,则不能INDEX
在语句中使用该词。 mysql将此解释为INDE
后跟定界符X
。当mysql 识别的分隔符设置为默认值以外的其他内容时
;
,该字符的实例将不经解释发送到服务器。但是,服务器本身仍然将其解释;
为语句定界符并相应地处理语句。服务器端的这种行为对多语句执行(请参阅 多语句执行支持)以及解析存储过程和函数、触发器和事件的主体(请参阅第 25.1 节,“定义存储程序”)起作用。编辑当前输入语句。mysql 检查
EDITOR
和VISUAL
环境变量的值以确定使用哪个编辑器。如果两个变量都没有设置,则 默认编辑器是 vi 。该
edit
命令仅适用于 Unix。将当前语句发送到服务器执行,并以垂直格式显示结果。
退出mysql。
将当前语句发送到要执行的服务器。
禁用输出分页。请参阅说明
pager
。该
nopager
命令仅适用于 Unix。禁用输出复制到 tee 文件。请参阅说明
tee
。在每个语句后禁用警告显示。
启用输出分页。通过
--pager
在调用 mysql时使用该选项,可以使用less、more或任何其他类似程序等Unix 程序以交互模式浏览或搜索查询结果 。如果您没有为该选项指定任何值,mysql将检查PAGER
环境变量的值并将寻呼机设置为该值。寻呼机功能仅适用于交互模式。可以使用命令以交互方式启用输出分页,
pager
并使用 禁用nopager
。该命令有一个可选参数;如果给定,寻呼程序设置为那个。如果没有参数,寻呼机将设置为在命令行上设置的寻呼机,或者stdout
如果未指定寻呼机。输出分页仅适用于 Unix,因为它使用了
popen()
Windows 上不存在的功能。对于 Windows,tee
可以使用该选项来保存查询输出,尽管pager
在某些情况下它不像浏览输出那样方便。打印当前输入语句而不执行它。
将mysql提示 重新配置为给定的字符串。可在提示中使用的特殊字符序列将在本节后面介绍。
如果指定
prompt
不带参数的命令,mysql会将提示重置为默认值mysql>
。query_attributes
name
value
[name
value
...]定义适用于发送到服务器的下一个查询的查询属性。有关查询属性的目的和使用的讨论,请参阅第 9.6 节,“查询属性”。
该
query_attributes
命令遵循以下规则:退出mysql。
重建完成哈希,在您输入语句时启用数据库、表和列名称完成。(请参阅
--auto-rehash
选项说明。)重置连接以清除会话状态。
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 | +------------------+
读取命名文件并执行其中包含的语句。在 Windows 上,将路径名分隔符指定为
/
或\\
。引号字符作为文件名本身的一部分。为获得最佳效果,名称不应包含空格字符。
ssl_session_data_print [
file_name
]获取、序列化并选择性地存储成功连接的会话数据。可以提供可选的文件名和参数来指定存储序列化会话数据的文件。如果省略,会话数据将打印到
stdout
.如果 MySQL 会话配置为重用,来自文件的会话数据将被反序列化并提供给
connect
命令以重新连接。成功重用会话后,该status
命令包含一行显示SSL session reused: true
客户端保持重新连接到服务器的状态。提供有关连接和您正在使用的服务器的状态信息。如果您在
--safe-updates
启用的情况下运行,status
还会打印影响查询的 mysql变量的值。使用默认的命令解释器执行给定的命令。
在 MySQL 8.0.19 之前,该
system
命令仅适用于 Unix。从 8.0.19 开始,它也适用于 Windows。tee [
,file_name
]\T [
file_name
]通过
--tee
在调用mysql时使用该选项,您可以记录语句及其输出。屏幕上显示的所有数据都附加到给定文件中。这对于调试目的也非常有用。mysql在每个语句之后将结果刷新到文件中,就在它打印下一个提示之前。Tee 功能仅在交互模式下有效。tee
您可以使用命令 以交互方式启用此功能 。如果没有参数,则使用以前的文件。tee
可以使用命令禁用该文件notee
。再次执行tee
重新启用日志记录。用作
db_name
默认数据库。在每个语句之后启用警告显示(如果有的话)。
以下是有关该pager
命令的一些提示:
您可以使用它写入文件,结果只写入文件:
mysql> pager cat > /tmp/log.txt
您还可以为要用作寻呼机的程序传递任何选项:
mysql> pager less -n -i -S
在前面的示例中,请注意该
-S
选项。您可能会发现它对于浏览广泛的查询结果非常有用。有时很难在屏幕上阅读非常宽的结果集。less-S
选项 可以使结果集更具可读性,因为您可以使用左箭头键和右箭头键水平滚动它。您还可以 在less中以交互 方式使用来打开和关闭水平浏览模式。有关更多信息,请阅读 less手册页:-S
man less
如果输出适合一个屏幕,则可以将
-F
and-X
选项与less一起使用以使其退出,这在不需要滚动时很方便: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
在此示例中,该命令会将查询结果发送到安装在和 上的两个不同文件系统的两个不同目录中的两个文件,但仍使用less/dr2
在屏幕上显示结果。
您还可以组合tee
和
pager
函数。tee
启用文件并将pager
其设置为less,您可以使用 less 程序浏览结果,同时
仍然将所有内容附加到文件中。tee
与该
pager
命令
一起使用的 Unix 与mysql内置命令之间的区别在于,即使您没有可用的 Unix teetee
,内置命令也能正常工作。内置
还记录了屏幕上打印的所有内容,而 Unix tee与
tee
tee
pager
不会记录那么多。此外,可以从mysqltee
中以交互方式打开和关闭文件日志记录。当您想要将某些查询记录到文件而不是其他查询时,这很有用。
该prompt
命令重新配置默认
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 |
当前年份,两位数 |
\_ |
空间 |
\ |
一个空格(空格跟在反斜杠后面) |
\' |
单引号 |
\" |
双引号 |
\\ |
文字\ 反斜杠字符 |
\ |
|
您可以通过多种方式设置提示:
使用环境变量。您可以将
MYSQL_PS1
环境变量设置为提示字符串。例如:export MYSQL_PS1="(\u@\h) [\d]> "
使用命令行选项。您可以将
--prompt
命令行上的选项设置为mysql。例如:$> mysql --prompt="(\u@\h) [\d]> " (user@host) [database]>
使用选项文件。您可以在任何 MySQL 选项文件组中设置
prompt
选项[mysql]
,例如/etc/my.cnf
或.my.cnf
您的主目录中的文件。例如:[mysql] prompt=(\\u@\\h) [\\d]>\\_
在此示例中,请注意反斜杠加倍。如果您使用
prompt
选项文件中的选项设置提示,建议在使用特殊提示选项时将反斜杠加倍。允许的提示选项集和选项文件中识别的特殊转义序列集有一些重叠。(选项文件中转义序列的规则在第 4.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>