2010-02-16 74 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