为什么SELECT*FROM table_name\G中的\ G?

kno*_*orv 24 mysql command-line history

使用\G而不是终止MySQL查询;将导致MySQL以垂直格式返回结果集,如果返回列的数量很大,有时更容易阅读.

例:

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)
Run Code Online (Sandbox Code Playgroud)

我的问题出于纯粹的好奇心:选择角色组合背后有什么理由\G吗?

Gav*_*son 46

简短答案
无处不在的分号命令终结符;实际上是\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?......因为这两个V,ve已经被指定为切换到其他调用行为.该ego命令可以很容易地用作\E它的快捷方式,但令人困惑地采用了该\g命令的大写版本.

总结... -
垂直 >> -E >> 自我 >> \ G ...田田!

  • 很好地解释了这个符号的含义,以及它背后的推理/惯例.这应该是公认的答案. (4认同)

Nat*_*C-K 8

我的想法:

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

但正如我在上面对Andriyev的帖子所做的评论中指出的那样,它实际上正在制作\ G大写,导致显示垂直布局.小写\ g没有这种效果,或者如果它有,那么文档没有提到它.(我没有MySQL安装方便试试.)

  • "\ g"相当于";" 在MySQL中 (5认同)