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?


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

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'

27

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

Show columns from tablename


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().


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.


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>';
?>

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


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

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.


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>";

1
„niektóre czytelny php” .. nazewnictwa zmiennych z a, b, c nie jest to, co nazwałbym czytelny
Kaymaz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.