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 command.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new 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 a 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.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

每个命令有长形式和短形式。长形式对大小写不敏感;短形式敏感。长形式后面可以加一个分号结束符,但短形式不可以。

delimiter命令中,应避免使用反斜线(\),因为这是MySQL的转义符。

Editnopagerpagersystem命令只在Unix中工作。

status命令提供连接和使用的服务器相关的部分信息。如果用--safe-updates模式运行,status也打印影响查询的MySQL变量的值。

要想记录查询及其输出,应使用tee命令。屏幕上显示的所有数据被追加到给定的文件后面。这对于调试也很有用。可以用--tee选项在命令行中启用该特性,或者用tee命令交互式启用。可以用notee命令交互式禁用tee文件。再次执行tee可以重新启用日志。前面的文件使用时不带任何参数。请注意执行完每个语句后tee可以将查询结果刷新到一个文件中,并且在mysql打印下一个提示前刷新。

--pager选项,可以用交互式模式使用Unix程序,例如lessmore或者其它类似的程序,来浏览或搜索查询结果。如果未指定该选项的值,mysql检查PAGER环境变量的值并将PAGER设为该值。可以用pager命令交互式启用输出分页,并用nopager禁用。该命令采用可选参量;如果给出,分页程序设置为该值。如果没有给出参量,分页器被设置为在命令行中设置的分页器的值,如果未指定分页器,则设置为stdout

输出分页只适合Unix,因为它使用popen()函数,该函数在Windows中不存在。在Windows中,可以使用tee选项来保存查询输出,尽管在某些情况下浏览输出时不如pager方便。

关于pager命令的一些技巧:

·         可以使用它写入一个文件,将结果只输出到该文件中:

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

也可以为将用作分页器的程序传递选项:

mysql> pager less -n -i -S

·         注意前面例子中的-S选项。它可以帮助浏览广范围的查询结果。有时太广的结果很难在屏幕上读出来。less-S选项可以使结果更易于读,因为可以用左、右箭头水平滚动它。还可以在less中交互式使用-S,以关闭或打开水平浏览模式。详细信息请阅读手册中的less页:

·                shell> man less

·         可以指定很复杂的pager命令来处理查询输出:

·                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 程序浏览结果,并且仍然可以同时将内容添加到一个文件中。结合pager命令使用的Unix teemysql嵌入式tee命令的差别是即使没有可用的Unix tee,嵌入式tee仍然可以工作。嵌入式tee还可以记录在屏幕上输出的内容,而结合pager命令使用的Unix tee不能记录那么多的内容。并且,可以从MySQL中交互式打开或关闭tee文件日志。当你想要将部分查询记录到一个文件中时很有用,但其它不适合。

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

选项

描述

\v

服务器版本

\d

当前的数据库

\h

服务器主机

\p

当前的TCP/IP端口或套接字文件

\u

你的用户名

\U

你的全user_name@host_name账户名

\\

\’反斜线字符

\n

新行字符

\t

Tab字符

\

空格(反斜线后面的空格)

\_

空格

\R

当前的时间,24-小时军用时间(0-23)

\r

当前的时间,标准12-小时(1-12)

\m

当前时间的分钟

\y

当前的年,两位

\Y

当前的年,四位

\D

当前的日期

\s

当前时间的秒

\w

当前周的天,3字符格式(MonTue...)

\P

am/pm

\o

当前的月,数字格式

\O

当前的月,3字符格式(JanFeb...)

\c

随发出的每个语句递增的计数

\S

分号

\'

单引号

\"

双引号

\’后面跟随的其它字母则变为该字母。

如果不用任何参量指定提示命令,mysql将提示重新设置位默认mysql>

可以用几种方式设置提示:

·         使用环境变量

可以用MYSQL_PS1环境变量来设置提示字符串。例如:

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

·         使用选项文件

可以在MySQL选项文件中的[mysql]组设置提示,例如根目录中的/etc/my.cnf.my.cnf文件。例如:

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

在该例子中,请注意反斜线是双线。如果使用选项文件中的prompt选项来设置提示,当使用特殊提示选项时,建议使用双反斜线。在允许的提示选项和选项文件中可识别的特殊转义序列中有部分重叠。(这些序列列于4.3.2节,“使用选项文件”如果使用单反斜线,会遇到问题。例如,\s被解释为空格而不是当前的秒值。下面的例子显示了如何在选项文件中定义提示以包括当前的时间,格式为HH:MM:SS>

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

·         使用命令行选项

可以在mysql的命令行中设置--prompt选项。例如:

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

·         交互式

你可以使用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>