在MySql命令行下进行多行命令编辑是很正常的一个操作,但有的时候,我们在执行多行命令编辑的时候,难免会有各种失误,一旦到此时,我们往往不得其法,其实了解一下MySql命令行的一些参数和提示的信息将会对多行命令编辑起到事半功倍的效果。
为了避免尽可能的错误,首先自然是要了解在多行命令行下,MySQL会给出的各种提示符的作用,下标是在MySQL命令行编辑时可能出现的一些提示符,小伙伴们,你震惊了吗?
提示符 | 含义 |
---|---|
mysql> | 准备好接受新命令。 |
-> | 等待多行命令的下一行。 |
‘> | 等待下一行,等待以单引号(“’”)开始的字符串的结束。 |
“> | 等待下一行,等待以双引号(“””)开始的字符串的结束。 |
`> | 等待下一行,等待以反斜点(‘`’)开始的识别符的结束。 |
/*> | 等待下一行,等待以/*开始的注释的结束。 |
了解完命令行中的提示符的一些意思之后,只是能够提醒我们,减少我们犯错误的概率罢了,要是犯错了,就需要一些更高级的法器了。当然这些法器获取也不是很难,仅是一些小小的命令而已,看完下表相信你就会了。
Note that all text commands must be first on line and end with ';' —— 这句我就不翻译了[MitchellChu注]
命令行命令 | 多行编辑等效命令 | 说明 |
---|---|---|
? | (?) | 和`help'一样,会在命令行下操作的人都应该清楚这个东东的重要性。 |
clear | (c) | 清理当前输入的语句,在多行编辑时,需要中途退出,在回车后,输入c试试。 |
connect | (r) | 重新连接到数据库服务器,可选参数db和host。 |
delimiter | (d) | 设置语句的定界符。 |
ego | (G) | 发送命令到MySQL服务器,并将结果列纵向显示。(译注:可参看Mitchell的上一篇求整型的最大值中的用法) |
exit | (q) | 退出MySQL,和quit的作用一样。 |
go | (g) | 将命令发送到MySQL服务器。 |
help | (h) | 显示帮助。 |
notee | (t) | 不要写入外部文件。 |
(p) | 打印当前的命令。 | |
prompt | (R) | 改变你mysql的提示。 |
quit | (q) | 退出mysql。 |
rehash | (#) | 重建已经完成的hash. |
source | (.) | 执行SQL脚本文件。需要一个文件名作为参数。 |
status | (s) | 从服务器获取状态信息。 |
tee | (T) | 设置外部文件[to_outfile]. 所有的信息将附加到给定的外部文件中。 |
use | (u) | 使用另外一个数据库,需要database的名称作为惨呼。 |
charset | (C) | 切换到另外的字符集。 可能在处理多字节字符集binlog的时候需要。 |
warnings | (W) | 在每个语句后面显示警告。 |
nowarning | (w) | 不要在每个语句后面显示警告。 |
有了这些法器(命令),在执行多行命令编辑的时候,就能更加灵活了。比如,在多行命令执行到一半,我们需要退出,那么只要使用个c就完事了。
mysql> CREATE TABLE IF NOT EXISTS table_name1-> (
-> id BIGINT UNSIGNED PRIMARY KEY,
-> name VARCHAR(120) NOT NULL
-> -- forgot use [,]
-> column_name VARCHAR(126) NOT NULL,
-> -- we found that it missed [,], wanna to cancel this command? just use c
-> c
mysql>
当时在这么一行行把命令重新敲一遍,也是非常痛苦的,怎么办?p先打印出来,回头好复制,在粘贴回去就好了。
mysql> CREATE TABLE IF NOT EXISTS table_name1-> (
-> id BIGINT UNSIGNED PRIMARY KEY,
-> name VARCHAR(120) NOT NULL
-> -- forgot use [,]
-> column_name VARCHAR(126) NOT NULL,
-> -- we found that it missed [,], wanna to cancel this command? just use c
-> -- but we want reuse this command later. First, use p to print current command.
-> p
--------------
CREATE TABLE IF NOT EXISTS table_name1
(
id BIGINT UNSIGNED PRIMARY KEY,
name VARCHAR(120) NOT NULL
column_name VARCHAR(126) NOT NULL,
--------------
-> c
mysql>
到此结束,剩下的请自行演练。
BTW:在Windows模式下,MySQL的命令行的clear命令是有问题的,所以如果你想知道为什么mysql 的clear命令在Windows的CMD模式下怎么没有效果,这就是原因了。