Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why the \G in SELECT * FROM table_name\G?

Terminating a MySQL query with \G instead of ; will cause MySQL to return the result set in vertical format, which is sometimes easier to read if the number of returned columns is large.

Example:

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) 

My question asked out of pure curiosity: Is there any rationale behind choosing the character combination \G?

like image 509
knorv Avatar asked Feb 16 '10 22:02

knorv


People also ask

What is \G at the end of a query used for?

The ubiquitous semicolon command terminator ; is actually shorthand for the \g command, which is in itself shorthand for the go command. The go command is used both historically and currently in other flavours of SQL to submit batches of commands to be compiled and / or interpretted by the server.

Why we use SELECT * from in SQL?

The SELECT statement is used to select data from a database. The data returned is stored in a result table, called the result-set.

What does \G do in MySQL?

The \G modifier gets the result in vertical order. If you use \g modifier, then it won't affect the result. The \g works likesemi-colon. Display all records from the table using select statement.

What is the use of the symbol * in SELECT statement?

If we want to return all columns of the table, we can use a (*) asterisk sign instead of writing whole columns of the table. Through the following query, we can return all columns of the table. At the same time, to retrieve all columns, we can do this by writing them all separately.


1 Answers

Short Answer
The ubiquitous semicolon command terminator ; is actually shorthand for the \g command, which is in itself shorthand for the go command. The go command is used both historically and currently in other flavours of SQL to submit batches of commands to be compiled and / or interpretted by the server. The \G command seems to inherit it's characteristic letter from \g, and is capitalised to further indicate a modified behaviour, as described by...
mysql> help ... \g go Send command to mysql server. \G ego Send command to mysql server, display result vertically. ...

Longer Answer ( It should really be \E )
Entering help at the mysql prompt lists all the possible mysql commands, including go and ego shown above. The ego command acquires a prepended 'e' indicating that this form of the go command also adopts a behaviour that would normally be imposed by invoking mysql with the similar switch mysql -E

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

So why use -E as shorthand for --vertical ?... Because both V, v, and e had already been assigned as switches to other invocation behaviours. The ego command could just have easily used \E as it's shortcut, but confusingly adopted a capitalised version of the \g command.

In summary...
--vertical >> -E >> ego >> \G ...Tada !

like image 106
Gavin Jackson Avatar answered Sep 23 '22 16:09

Gavin Jackson