Come ottenere i nomi di tutte le colonne per tutte le tabelle in MySQL?


189

Esiste un modo rapido per ottenere tutti i nomi di colonna da tutte le tabelle MySQL, senza dover elencare tutte le tabelle?


2
Ho solo bisogno di una rapida panoramica sul database. Non sarà un codice in un'app.
— Dieter,

Risposte:


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

era quello che stavo cercando :-) Ho scritto un'app java facendo le stesse cose ormai
— dieter

Grazie! Per ottenere solo i nomi delle colonne, utilizzare questo: selezionare nome_colonna da information_schema.columns dove table_schema = 'your_db' ordina per table_name, ordinal_position
— Phil Goetz

Esattamente quello che stavo cercando! Grazie.
— zookastos,

Che ne dici di ottenere il conteggio dei dati riempiti davanti ai nomi delle colonne? Ho lo stesso problema più il conteggio dei dati
— Gulmuhammad Akbari,

che ne dici di conoscere la chiave primaria?
— David Walser,

48

Per elencare tutti i campi da una tabella in MySQL:

select * 
  from information_schema.columns 
 where table_schema = 'your_DB_name' 
   and table_name = 'Your_tablename'

27
SELECT * FROM information_schema.columns
WHERE table_schema = DATABASE()
ORDER BY table_name, ordinal_position

Dal momento che non ho abbastanza rappresentante per commentare, ecco un piccolo miglioramento (a mio avviso) rispetto all'eccellente risposta di nick rulez: la sostituzione WHERE table_schema = 'your_db'con WHERE table_schema = DATABASE().


È utile Mi da sempre fastidio scrivere cose del genere quando può essere evitato. Grazie.
— David,

27

è meglio utilizzare la seguente query per ottenere facilmente tutti i nomi di colonna

Show columns from tablename


A volte hai bisogno di una soluzione che non si basi su information_schema
— Bradley M. Davis,

17

In caso contrario è utile a chiunque altro, questo ti darà un elenco delimitato da virgole delle colonne in ogni tabella:

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

Nota: quando si utilizzano tabelle con un numero elevato di colonne e / o con nomi di campi lunghi, tenere presente il limite group_concat_max_len , che può causare il troncamento dei dati.


1
Mi piace questo ... dal momento che potrei facilmente copiare tutti i nomi delle colonne.
— 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
Chiunque abbia letto questo nel 2016 - mysql_query è diventato obsoleto. Meglio usare il mysqli di PHP in futuro.
— JCutting8


4

La domanda era:

Esiste un modo rapido per ottenere tutti i COLOMN NAMES da tutte le tabelle in MySQL, senza dover elencare tutte le tabelle?

SQL per ottenere tutte le informazioni per ogni colonna

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

SQL per ottenere tutti i nomi delle colonne

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


3

Piggybacking sulla risposta di Nicola con qualche php leggibile

$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
'some php leggibile' .. La denominazione delle variabili con a, b, c non è quella che definirei leggibile
— Kaymaz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.