Jak wyświetlić nazwy kolumn tabeli?

17

Sprawa jest prosta: masz bazę danych MySQL, w której masz tylko interfejs zapytań SQL i chcesz poznać strukturę bazy danych za pomocą zapytań. Możesz wyświetlić tabele za pomocą show tables;polecenia, ale jak widzisz nazwy poszczególnych kolumn?

( SELECTinstrukcja pokazuje, Empty setczy nie ma żadnych danych i NIE można ich w ten sposób wykorzystać).

mico
źródło
Uwaga: zaakceptowane rozwiązanie jest najważniejsze w kwestii descpolecenia. Co ciekawe, jest najkrótszy, ale ma najmniej głosów. Dla mnie też jest najlepszy.
mico
2
poprosiłeś o proste zapytanie SQL. Twoja odpowiedź nie jest w języku SQL, więc może to tłumaczyć niską liczbę głosów. Prawdopodobnie powinieneś zmienić tytuł zapytania na: „Jak wyświetlić nazwy kolumn tabeli”
Lennart,
Dobry pomysł, teraz moja odpowiedź lepiej pasuje do pytania.
mico,

Odpowiedzi:

36
select column_name from information_schema.columns where table_name='table'
msi77
źródło
2
Tymczasem okazało się, że to zapytanie jest również przydatne: show create table <table_name>gdzie zamiast <nazwa_tabeli> wstawiasz nazwę tabeli jako zwykły tekst. Daje to również typy, podczas gdy twój bardzo dobrze pasuje do celów aukcji.
mico
Jak powiedział @mico: „pokaż stwórz tabelę nazwa_bloku \ G” może być twoim rozwiązaniem. Zobacz dev.mysql.com/doc/refman/5.7/en/show-create-table.html Część „\ G” służy tylko do formatowania danych wyjściowych. Pozdrowienia.
tdaget
6

Najlepszym rozwiązaniem, jakie sam odkryłem, było desc table_namepolecenie. Więcej informacji znajduje się na List MySQL Tables . To polecenie podaje opis jednej tabeli bazy danych, a dokładnie tego próbowałem się dowiedzieć.

mico
źródło
6

Aby upewnić się, że masz listę kolumn w tabeli w bieżącej bazie danych, użyj funkcji DATABASE () lub SCHEMA () . Zwraca NULL, jeśli nie znajdujesz się w bieżącej bazie danych. To zapytanie pokaże kolumny w tabeli w kolejności, w jakiej zostały zdefiniowane kolumny:

SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;
RolandoMySQLDBA
źródło
3

Nie jestem pewien, czy rozumiem, co masz na myśli z tytułami tabel , ale możesz uzyskać większość informacji o tabelach i ich kolumnach z INFORMACJE_SCHEMA

koń bez imienia
źródło
3

jak widzisz poszczególne tytuły tabeli?

Masz na myśli komentarze do tabeli ?

use stack;
create table t(v integer primary key) comment 'My Special Table';

show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t               |
+-----------------+

select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment    |
+------------+------------------+
| t          | My Special Table |
+------------+------------------+
Jack mówi, że spróbuj topanswers.xyz
źródło
Chciałem tych nazw kolumn i mam już kilka sposobów dzięki szybkim odpowiedziom. Dzięki za ten komentarz, Jack.
mico
1
Czy masz coś przeciwko przeformułowaniu pytania, aby było bardziej zrozumiałe, że szukasz kolumn?
Jack mówi, że spróbuj topanswers.xyz
2
SHOW COLUMNS FROM mydb.mytable;

gdzie mydb - baza danych zawierająca potrzebną tabelę

mytable - jest potrzebną tabelą

Zwraca informacje o kolumnach (np. Nazwy kolumn, typ itp.)

Rolya Chuma
źródło
1
Odradzane są małe fragmenty kodu bez wyjaśnienia, w jaki sposób rozwiązują problem PO. Spróbuj dodać więcej szczegółów do swojej odpowiedzi.
Erik,
0

Musisz dołączyć information_schema.tablesi information_schema.columnsrazem, aby uzyskać listę tabel i szczegóły ich kolumn.

information_schema.columnsnie tylko pokazuje szczegóły dotyczące tabel, ale także widoki. Nie ma możliwości filtrowania tylko szczegółów tabeli z tego widoku systemu.

Dlatego musisz dołączyć.

Przykładowe zapytanie:

select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2 
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE' 
order by t.table_schema, t.table_name, c.column_name 
;
Sundar Kannan
źródło