获取所有MySQL表中的所有列

是否有一个快速的方法来获取MySQL中所有表的所有列名,而不必列出所有的表?

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

列出MySQL中一个表中的所有字段:

 select * from information_schema.columns where table_schema = 'your_DB_name' and table_name = 'Your_tablename' 
 SELECT * FROM information_schema.columns WHERE table_schema = DATABASE() ORDER BY table_name, ordinal_position 

由于我没有足够的代表评论,这里有一个小小的改进(在我看来)在nick规则的优秀答案:用WHERE table_schema = DATABASE()replaceWHERE table_schema = 'your_db'

最好使用以下查询来轻松获取所有列名称

Show columns from tablename

在对其他人有用的地方,这将给你一个逗号分隔的列表在每个表中:

 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 

注意:使用列数较多和/或字段名较长的表时,请注意group_concat_max_len限制,这可能会导致数据被截断。

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

我很久以前写了这个愚蠢的东西,现在还在不时地使用它:

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

基本上,它会做一个“SHOW TABLES”,然后是每个表格上的一个“DESCRIBE”,然后把它吐出来作为降价。

只需在“if name ”下面编辑即可。 你需要安装pymysql。

在一些可读的PHP上捎带Nicola的答案

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

与@suganya发布的答案类似,这并不直接回答这个问题,而是一个单一表的更快捷的select:

 DESCRIBE column_name;