获取所有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;