Почему \ G в SELECT * FROM table_name \ G? - PullRequest
22 голосов
/ 17 февраля 2010

Завершение запроса 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?

Ответы [ 3 ]

41 голосов
/ 13 октября 2016

Короткий ответ
Вездесущий терминатор точек с запятой ; фактически является сокращением для команды \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 ... Тада!

7 голосов
/ 17 февраля 2010

Мои мысли:

  1. Это, вероятно, означает "иди".
  2. Postgresql также использует \ g как терминатор оператора. Postgresql старше MySQL, поэтому он мог на них повлиять.

Но, как я указывал в своем комментарии к посту Андриева выше, на самом деле он делает заглавными \ G верхний регистр, в результате чего дисплей располагается вертикально. Строчные буквы \ g не имеют такого эффекта, или, если это так, то документация не упоминает об этом. (У меня нет удобной установки MySQL, чтобы попробовать ее.)

0 голосов
/ 17 февраля 2010

Соответствует параметрам форматирования команды lix 'ls *

...