暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

4.5.1.2 mysql客户端命令

原创 由迪 2020-11-18
529

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. For server side help, type 'help contents'

如果MySQL的与被调用的 --binary-mode选项,所有 的MySQL命令除禁用 charsetdelimiter非交互模式(用于输入管道输送到的MySQL 或使用所加载的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,则该字符集可以在客户端和服务器上保持同步(不建议这样做),因为指定的字符集用于重新连接。

  • clear\c

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

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

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

    如果connect命令指定了主机名参数,则该主机优先--dns-srv-namemysql启动时指定DNS SRV记录的任何 选项 。

  • delimiter *str*\d *str*

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

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

    mysql会在出现分隔符字符串的任何实例时将其解释为语句分隔符,但带引号的字符串中除外。在定义可能在其他字词中出现的定界符时要小心。例如,如果将定界符定义为 X,则无法INDEX在语句中使用单词 。 mysql将其解释为 INDE后跟定界符 X

    mysql识别的分隔符设置为默认值以外的其他值时 ;,该字符的实例将不经解释即发送到服务器。但是,服务器本身仍将其解释;为语句定界符并相应地处理语句。服务器端的这种行为对于多语句执行(请参见 C API多语句执行支持)以及对存储过程和函数,触发器和事件的主体进行解析(请参见第24.1节“定义存储程序”)起作用。。

  • edit\e

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

    edit命令仅在Unix中有效。

  • ego\G

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

  • exit\q

    退出mysql

  • go\g

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

  • nopager\n

    禁用输出分页。请参阅的说明 pager

    nopager命令仅在Unix中有效。

  • notee\t

    禁止将输出复制到tee文件。请参阅的说明tee

  • nowarning\w

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

  • pager [*command*]\P [*command*]

    启用输出分页。通过--pager在调用mysql时使用该选项,可以 使用 交互程序以Unix程序(如lessmore或任何其他类似程序)浏览或搜索查询结果 。如果您没有为选项指定任何值,则mysql将检查PAGER环境变量的值 并将分页器设置为该值。寻呼机功能仅在交互模式下有效。

    可以使用pager命令交互启用输出分页,并使用禁用 输出分页 nopager。该命令带有一个可选参数。如果给定,则将寻呼程序设置为此。如果不使用任何参数,则将寻呼机设置为在命令行上设置的寻呼机,或者stdout如果未指定任何寻呼机。

    输出分页仅在Unix中有效,因为它使用popen()Windows上不存在的 功能。对于Windows,该tee选项可以代替保存查询输出,尽管pager在某些情况下它不如浏览输出方便。

  • print\p

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

  • prompt [*str*]\R [*str*]

    mysql提示符重新配置为给定的字符串。提示中可以使用的特殊字符序列将在本节后面介绍。

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

  • query_attributes *name* *value* [*name* *value* ...]

    定义适用于发送到服务器的下一个查询的查询属性。有关查询属性的用途和用途的讨论,请参见第9.6节“查询属性”

    query_attributes命令遵循以下规则:

    • 属性名称和值的格式和引用规则与delimiter命令相同 。
    • 该命令最多允许32个属性名称/值对。名称和值的长度最多为1024个字符。如果给出的名称不带值,则会发生错误。
    • 如果query_attributes在执行查询之前发出了多个命令,则仅最后一个命令适用。发送查询后, mysql清除属性集。
    • 如果使用相同的名称定义了多个属性,则尝试检索属性值将导致结果未定义。
    • 用空名称定义的属性无法通过名称检索。
    • 如果在mysql 执行查询时发生重新连接,则mysql将在重新连接后恢复属性,以便可以使用相同的属性再次执行查询。
  • quit\q

    退出mysql

  • rehash\#

    重建完成哈希,以使您在输入语句时能够完成数据库,表和列名的存储。(请参阅--auto-rehash选项说明 。)

  • resetconnection\x

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

    重置连接具有与mysql_change_user()自动重新连接类似的效果, 不同之处在于未关闭并重新打开连接,并且未完成重新身份验证。参见 mysql_change_user()C API自动重新连接控制

    此示例显示如何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 *file_name*\. *file_name*

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

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

  • status\s

    提供有关连接和正在使用的服务器的状态信息。如果在--safe-updates启用状态下运行 , status还将打印影响查询的mysql变量的值 。

  • system *command*\! *command*

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

    在MySQL 8.0.19之前,该system命令仅适用于Unix。从8.0.19开始,它也可以在Windows上运行。

  • tee [*file_name*]\T [*file_name*]

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

    您可以使用tee命令以交互方式启用此功能 。如果没有参数,则使用先前的文件。tee可以使用notee命令禁用该文件。tee再次执行将重新启用日志记录。

  • use *db_name*\u *db_name*

    使用*db_name*作为默认数据库。

  • warnings\W

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

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

  • 您可以使用它来写入文件,而结果仅进入文件:

    mysql> pager cat > /tmp/log.txt

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

    mysql> pager less -n -i -S
  • 在前面的示例中,请注意该-S 选项。您可能会发现它对于浏览广泛的查询结果非常有用。有时很难在屏幕上读取非常宽的结果集。更少-S选项 可以使结果集更具可读性,因为您可以使用左箭头键和右箭头键水平滚动它。您还可以在less内进行交互使用 , 以打开和关闭水平浏览模式。有关更多信息,请阅读 较少手册的页面: -S

    shell> 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,但仍使用less在屏幕上显示结果。

您还可以组合teepager功能。tee启用一个 文件并将其pager 设置为less,您就可以使用less程序浏览结果,同时仍将所有内容附加到文件中。tee与该pager命令一起使用的Unix与 mysql内置命令 之间的区别在于,即使您没有可用的Unix tee,也可以使用tee内置命令。内置功能 还记录了屏幕上打印的所有内容,而Unix teetee``tee``pager记录得并不多。另外,tee可以从mysql内部以交互方式打开和关闭文件日志记录。当您想将某些查询而不是其他查询记录到文件时,此功能很有用。

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

选项 描述
\C 当前连接标识符
\c 针对您发出的每个语句递增的计数器
\D 完整的当前日期
\d 默认数据库
\h 服务器主机
\l 当前定界符
\m 当前时间
\n 换行符
\O 本月以三字母格式显示(一月,二月,…)
\o 当前月份(数字格式)
\P 上午下午
\p 当前的TCP / IP端口或套接字文件
\R 当前时间,以24小时军事时间(0-23)
\r 当前时间,标准的12小时制(1–12)
\S 分号
\s 当前时间的秒数
\t 制表符
\U 您的全 名 *user_name*@*host_name*
\u 您的用户名
\v 服务器版本
\w 一周中的当前日期,以三个字母的格式显示(周一,周二,…)
\Y 当前年份,四位数
\y 当前年份,两位数
\_ 空间
\ 空格(反斜杠后跟空格)
\' 单引号
\" 双引号
\\ 文字\反斜杠字符
\*x* x,对于上面未列出的 任何 “ x

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

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

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

    shell> mysql --prompt="(\u@\h) [\d]> "
    (user@host) [database]>
    
  • *使用选项文件。*您可以prompt[mysql]任何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>
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论