2010-02-16 13 views
19

Kończenie zapytania MySQL za pomocą \G zamiast ; spowoduje, że MySQL zwróci zestaw wyników w formacie pionowym, który jest czasami łatwiejszy do odczytania, jeśli liczba zwróconych kolumn jest duża.Dlaczego G w SELECT * FROM nazwa_tabeli G?

Przykład:

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) 

Moje pytanie zadane z czystej ciekawości: Czy istnieje uzasadnienie wyboru kombinacji znaków \G?

Odpowiedz

7

Myślami:

  1. To prawdopodobnie oznacza "iść".
  2. Postgresql również używa \ g jako terminator instrukcji. Postgresql jest starszy niż MySQL, więc mógł na nie wpłynąć.

Ale, jak wskazałem w moim komentarzu do postu Andrijewa powyżej, jest to w rzeczywistości wielka litera \ G, która powoduje, że wyświetlacz jest ułożony pionowo. Małe litery \ g nie mają takiego efektu, a jeśli tak, to dokumentacja o nim nie wspomina. (Nie mam zainstalować MySQL poręczne, aby ją wypróbować.)

+4

"\ g" jest równoważne ";" w MySQL –

0

Pasuje polecenia Unix opcje formatowania 'ls'

+0

W jaki sposób pasuje do opcji formatowania ls? Masz na myśli "ls-G"? – knorv

+0

Nie, -G jsut ukrywa grupę. I -g po prostu ukrywa właściciela. Nie jesteś pewien, o czym myślisz, ale -1 pokazuje go w 1 kolumnie. – MJB

17

Krótka odpowiedź
Wszechobecne średnik komenda terminator ; jest właściwie skrótem polecenia \g, co jest samo w sobie skrótem polecenia w go. Komenda go jest używana zarówno historycznie, jak i obecnie w innych smakach SQL, do przesyłania partii poleceń do kompilacji i/lub interpretacji przez serwer. Komenda \G wydaje się dziedziczyć to charakterystyczne pismo \g i są aktywowane w celu dalszego wskazują zmodyfikowaną zachowanie, jak opisane przez ...
mysql> help ... \g go Send command to mysql server. \G ego Send command to mysql server, display result vertically. ...

Dłuższa odpowiedź (Trzeba być naprawdę \ E)
Wprowadzając help w wierszu komend mysql wyszczególnione są wszystkie możliwe polecenia mysql, w tym go i ego przedstawione powyżej. Komenda ego nabywa poprzedzany „e” wskazujący, że ta forma komendy go przyjmuje również zachowanie, które normalnie byłyby nałożone powołując mysql z podobnym przełącznika mysql -E

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

Dlaczego więc używać -E jako skrót dla --vertical? ... Ponieważ zarówno V, v, jak i e zostały już przypisane jako przełączniki do innych zachowań wywoływania. Komenda ego mogła po prostu łatwo użyć \E jako skrótu, ale wprowadziła w błąd wielką literę polecenia \g.

Podsumowując ...
--vertical >>-E >>ego >>\ G ... Tada!

+1

Doskonałe wyjaśnienie znaczenia tego symbolu i rozumowania/konwencji za nim. To powinna być zaakceptowana odpowiedź. – Aaron