使用\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)
我的问题出于纯粹的好奇心:选择字符组合\G
背后是否有任何理由?
答案 0 :(得分:39)
简答
无处不在的分号命令终结符;
实际上是\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.
...
继承了它的特征字母,并且大写以进一步表示修改后的行为,如...所述
help
更长的答案(它应该是 \ E )
在mysql提示符下输入go
会列出所有可能的mysql命令,包括上面显示的ego
和ego
。 go
命令获取前置' e。表明这种形式的mysql -E
命令也采用了通常通过使用类似的开关调用mysql强加的行为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
的简写?...因为v
,e
和ego
都已被指定为其他调用行为的开关。 \E
命令可以很容易地使用\g
作为它的快捷方式,但是混淆地采用了#define Jfoo_MIN 0
#define Jfoo_MAX 5
void Jfoo(unsigned x) {
printf("%u\n", x);
}
void Jfoo_test(void) {
const unsigned u = 5;
const unsigned v = 6;
struct {
unsigned x1 :3;
unsigned x2 :3;
} foo = {
// No warning
u + (7 - Jfoo_MAX),
// warning: large integer implicitly truncated to unsigned type [-Woverflow]
v + (7 - Jfoo_MAX),
};
(void) foo;
Jfoo(u);
Jfoo(v);
// warning: expression in static assertion is not an integer constant expression [-Wpedantic]
_Static_assert(u <= Jfoo_MAX, "Too hot u");
// warning: expression in static assertion is not an integer constant expression [-Wpedantic]
// error: static assertion failed: "Too hot v"
_Static_assert(v <= Jfoo_MAX, "Too hot v");
}
命令的大写版本。
总结......
- 垂直&gt;&gt; -E &gt;&gt; ego &gt;&gt; \ G ... Tada!
答案 1 :(得分:7)
我的想法:
但正如我在上面对Andriyev的帖子所做的评论中所指出的那样,它实际上是使得G大写,导致显示垂直排列。小写\ g没有这种效果,或者如果它有,那么文档没有提到它。 (我没有方便的MySQL安装试用。)
答案 2 :(得分:1)
除了 Gavin Jackson 很棒的答案之外,我还发现了这个小宝石:
$ mysql --auto-vertical-output
如果输出比终端宽,结果会自动以垂直格式显示。
添加别名:
$ alias mysql='mysql --auto-vertical-output'
使别名永久化
$ echo "alias mysql='mysql --auto-vertical-output'" | tee -a ~/.bashrc
答案 3 :(得分:-2)
它匹配Unix命令'ls'格式化选项