Почему\G в SELECT * FROM table_name\G?
Прекращение запроса MySQL с помощью \G
вместо ;
приведет к тому, что 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
?
Ответы
Ответ 1
Мои мысли:
- Это, вероятно, означает "идти".
- Postgresql также использует \g в качестве терминатора операторов. Postgresql старше MySQL, поэтому он может повлиять на них.
Но, как я указывал в своем комментарии к сообщению Андреева выше, это фактически делает верхний регистр \G, который заставляет дисплей выкладываться вертикально. Нижний регистр \g не имеет этого эффекта, или если он это делает, то в документации это не упоминается. (У меня нет простой установки MySQL, чтобы попробовать.)
Ответ 2
Короткий ответ
Вездесущий терминатор командной строки с запятой ;
является фактически сокращением для команды \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)
Ввод help
в приглашении mysql перечисляет все возможные команды mysql, включая go
и ego
, показанные выше. Команда 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
, V
, так и e
уже были назначены как переключатели для других способов обращения. Команда ego
могла просто легко использовать \E
в качестве ярлыка, но путано принята капитализированная версия команды \g
.
В заключение...
- вертикальный → -E → эго → \G... Tada!
Ответ 3
Он соответствует параметрам форматирования 'ls' команды Unix