Подтвердить что ты не робот

Почему\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?

4b9b3361

Ответ 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