Risposte:
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
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()
.
è meglio utilizzare la seguente query per ottenere facilmente tutti i nomi di colonna
Show columns from tablename
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.
<?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>';
?>
Simile alla risposta inviata da @suganya, questo non risponde direttamente alla domanda ma è un'alternativa più rapida per una singola tabella:
DESCRIBE column_name;
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
Ho scritto questa cosa stupida molto tempo fa e ancora oggi la uso ancora:
https://gist.github.com/kphretiq/e2f924416a326895233d
Fondamentalmente, fa un "SHOW TABLES", quindi un "DESCRIBE" su ogni tabella, quindi lo sputa come markdown.
Modifica sotto "se il nome " e vai. Dovrai aver installato pymysql.
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>";