Jak uzyskać nazwy wszystkich kolumn dla wszystkich tabel w MySQL?

189

Czy istnieje szybki sposób na uzyskanie wszystkich nazw kolumn ze wszystkich tabel MySQLbez konieczności wyświetlania wszystkich tabel?

dieter
źródło
2
Potrzebuję tylko szybkiego przeglądu bazy danych. To nie będzie kod w aplikacji.
dieter

Odpowiedzi:

304
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
Nicola Cossu
źródło
tego właśnie szukałem :-) Napisałem aplikację Java, która robi teraz te same rzeczy
dieter
Dzięki! Aby uzyskać tylko nazwy kolumn, użyj tego: wybierz nazwę_kolumny z informacji_schema.kolumny, gdzie tabela_schemy = 'twoja_db' uporządkuj według nazwa_tabeli, pozycja porządkowa
Phil Goetz
Dokładnie tego szukałem! Dzięki.
zookastos
Co powiesz na uzyskanie liczby wypełnionych danych przed nazwami kolumn? Mam ten sam problem plus liczbę danych
Gulmuhammad Akbari
co powiesz na znajomość klucza podstawowego?
David Walser
48

Aby wyświetlić listę wszystkich pól z tabeli w MySQL:

select * 
  from information_schema.columns 
 where table_schema = 'your_DB_name' 
   and table_name = 'Your_tablename'
suganya
źródło
27

lepiej jest użyć następującego zapytania, aby łatwo uzyskać wszystkie nazwy kolumn

Show columns from tablename

rajesh satpute
źródło
Czasami potrzebujesz rozwiązania, które nie opiera się na
scenie_informacji
26
SELECT * FROM information_schema.columns
WHERE table_schema = DATABASE()
ORDER BY table_name, ordinal_position

Ponieważ nie mam wystarczająco dużo rep do komentarza, tutaj jest poprawa drobne (moim zdaniem) na doskonałą odpowiedź nick rulez na: wymianie WHERE table_schema = 'your_db'z WHERE table_schema = DATABASE().

appel
źródło
To jest pomocne. Zawsze denerwuje mnie kodowanie takich rzeczy, kiedy można tego uniknąć. Dzięki.
David
17

Na szczęście przydaje się każdemu innemu, da ci rozdzieloną przecinkami listę kolumn w każdej tabeli:

SELECT table_name,GROUP_CONCAT(column_name ORDER BY ordinal_position)
FROM information_schema.columns
WHERE table_schema = DATABASE()
GROUP BY table_name
ORDER BY table_name

Uwaga: Korzystając z tabel z dużą liczbą kolumn i / lub długimi nazwami pól, należy pamiętać o limicie group_concat_max_len , który może spowodować obcięcie danych.

traper_hag
źródło
1
Podoba mi się ten ... ponieważ mogłem łatwo skopiować wszystkie nazwy kolumn.
jatazoulja
6
<?php
        $table = 'orders';
        $query = "SHOW COLUMNS FROM $table";
        if($output = mysql_query($query)):
            $columns = array();
            while($result = mysql_fetch_assoc($output)):
                $columns[] = $result['Field'];
            endwhile;
        endif;
        echo '<pre>';
        print_r($columns);
        echo '</pre>';
?>
Ali Nawaz
źródło
1
Każdy, kto to czyta w 2016 r. - mysql_query stał się przestarzały. Najlepiej używać mysqli PHP w przyszłości.
JCutting8
5

Podobnie do odpowiedzi wysłanej przez @suganya, to nie odpowiada bezpośrednio na pytanie, ale jest szybszą alternatywą dla pojedynczego stołu:

DESCRIBE column_name;
Philip Kirkbride
źródło
Spowoduje to wydrukowanie tabeli, a nie tylko nazw kolumn tabeli.
k0pernikus
4

Pytanie brzmiało:

Czy istnieje szybki sposób na uzyskanie wszystkich NAZW KOLUMN ze wszystkich tabel w MySQL, bez konieczności wyświetlania wszystkich tabel?

SQL, aby uzyskać wszystkie informacje dla każdej kolumny

select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position

SQL, aby uzyskać wszystkie NAZWY KOLUMNOWE

select COLUMN_NAME from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
J.BizMai
źródło
3

Dawno temu napisałem tę głupią rzecz i nadal używam jej od czasu do czasu:

https://gist.github.com/kphretiq/e2f924416a326895233d

Zasadniczo wykonuje „POKAŻ TABELE”, następnie „OPIS” na każdym stole, a następnie wyrzuca go jako markdown.

Po prostu edytuj poniżej „if name ” i idź. Musisz mieć zainstalowany pymysql.

lysdeksja
źródło
3

Piggybacking na odpowiedzi Nicoli z czytelnym php

$a = mysqli_query($conn,"select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position");
$b = mysqli_fetch_all($a,MYSQLI_ASSOC);
$d = array();
foreach($b as $c){
    if(!is_array($d[$c['TABLE_NAME']])){
        $d[$c['TABLE_NAME']] = array();
    }
    $d[$c['TABLE_NAME']][] = $c['COLUMN_NAME'];
}
echo "<pre>",print_r($d),"</pre>";
Scot Nery
źródło
1
„niektóre czytelny php” .. nazewnictwa zmiennych z a, b, c nie jest to, co nazwałbym czytelny
Kaymaz