2010-02-16 16 views
19

Terminar una consulta MySQL con \G en lugar de ; hará que MySQL devuelva el conjunto de resultados en formato vertical, que a veces es más fácil de leer si el número de columnas devueltas es grande.¿Por qué G en SELECT * FROM table_name G?

Ejemplo:

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) 

Mi pregunta hecha por pura curiosidad: ¿Hay alguna razón detrás de la elección de la combinación de caracteres \G?

Respuesta

7

Mis pensamientos:

  1. Probablemente significa "ir".
  2. Postgresql también usa \ g como un terminador de sentencia. Postgresql es más antiguo que MySQL, por lo que podría haber influido en ellos.

Pero como señalé en mi comentario a la publicación anterior de Andriyev, en realidad está haciendo que la mayúscula \ G haga que la pantalla se despliegue verticalmente. Minúscula \ g no tiene ese efecto, o si lo hace, la documentación no lo menciona. (No tengo una instalación de MySQL a mano para probarlo.)

+4

"\ g" es equivalente a ";" en MySQL –

0

Coincide con el comando Unix opciones de formato 'ls'

+0

¿Cómo coincide con las opciones de formato de ls? ¿Quieres decir "ls -G"? – knorv

+0

No, -G jsut oculta el grupo. Y -g solo oculta al dueño. No estoy seguro de lo que está pensando, pero -1 lo muestra en 1 columna. – MJB

17

Respuesta corta
La ubicua y coma comando terminador ; es en realidad la abreviatura de la orden \g, que es en sí mismo la taquigrafía para el comando go. El comando go se usa tanto históricamente como actualmente en otros sabores de SQL para enviar lotes de comandos que el servidor debe compilar y/o interpretar. El comando \G parece heredar es característica carta de \g, y se escribe con mayúscula para indicar, además, un comportamiento modificado, tal como se describe por ...
mysql> help ... \g go Send command to mysql server. \G ego Send command to mysql server, display result vertically. ...

más largo Respuesta (En realidad debería ser \ E)
Al ingresar al help en el indicador mysql se enumeran todos los comandos posibles de mysql, incluidos go y ego que se muestran arriba. El comando ego adquiere una antepuesto 'e' que indica que esta forma del comando go también adopta un comportamiento que normalmente se impone mediante la invocación de MySQL con un cambio similar mysql -E

De 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. ...

Así que ¿por qué utilizar -E como ¿taquigrafía para --vertical? ... Porque tanto V, v, como e ya habían sido asignados como conmutadores a otros comportamientos de invocación. El comando ego podría haber usado fácilmente \E como atajo, pero de manera confusa adoptó una versión en mayúscula del comando \g.

En resumen ...
--vertical >>-E >>ego >>\ G ... Tada!

+1

Gran explicación del significado de este símbolo y el razonamiento/convención detrás de él. Esta debería ser la respuesta aceptada. – Aaron