2010-02-16 72 views
19

使用\G而不是;来终止MySQL查询将导致MySQL以垂直格式返回结果集,如果返回的列数很大,这有时会更容易阅读。为什么 G在SELECT * FROM table_name G?

例子:

mysql> SELECT * FROM help_keyword LIMIT 3\G 
*************************** 1. row *************************** 
help_keyword_id: 0 
      name: JOIN 
*************************** 2. row *************************** 
help_keyword_id: 1 
      name: REPEAT 
*************************** 3. row *************************** 
help_keyword_id: 2 
      name: SERIALIZABLE 
3 rows in set (0.00 sec) 

我的问题问出来的纯好奇心:是有幕后黑手选择字符组合\G任何理由?

回答

7

我的想法一致:

  1. 这可能意味着 “走出去”。
  2. Postgresql还使用\ g作为语句终止符。 Postgresql比MySQL早,所以它可能会影响它们。

但正如我在上文对Andriyev的帖子的评论中指出的那样,它实际上使得\ G大写,使得显示器垂直布局。小写\ g没有这种效果,或者如果它确实,则文档没有提及它。 (我没有MySQL的安装方便尝试一下。)

+4

“\ g”等同于“;”在MySQL中 –

0

它的Unix命令 'ls' 的格式选项

+0

它如何匹配ls格式选项?你的意思是“ls -G”? – knorv

+0

不,-G jsut隐藏该组。而-g只是隐藏了所有者。不知道你在想什么,但-1显示在1列。 – MJB

17

简答
无处不在的分号命令终止;实际上是为\g命令,这本身就是简写go命令的简写。 go命令在历史上和当前都在其他类型的SQL中使用,以提交要由服务器编译和/或解释的批命令。该\G命令似乎继承它从\g特点字母,大写进一步指示修改行为,如...
mysql> help ... \g go Send command to mysql server. \G ego Send command to mysql server, display result vertically. ...

描述再回应(它确实应该。\ E
在mysql提示符下输入help会列出所有可能的mysql命令,包括上面显示的goego。该ego命令取得添附的“E”表示这种形式的go命令还采用了通常会通过调用MySQL与同类开关mysql -E

man mysql... ... --vertical, -E Print query output rows vertically (one line per column value). Without this option, you can specify vertical output for individual statements by terminating them with \G. ...

的罚款那么为什么要使用-E作为行为速记--vertical?...因为Vve已被分配为其他调用行为的切换。 ego命令可以很容易地使用\E作为它的快捷方式,但易混淆地采用了大写版本的\g命令。

总结...
--vertical >>-E >>自我 >>\ G变 ...田田!

+1

对这个符号的意义以及它背后的推理/约定的很好的解释。这应该是被接受的答案。 – Aaron