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.