10 ответов:
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поскольку у меня недостаточно репутации для комментариев, Вот небольшое улучшение (на мой взгляд) по сравнению с отличным ответом Ника рулеза: замена
WHERE table_schema = 'your_db'СWHERE table_schema = DATABASE().
лучше использовать следующий запрос, чтобы получить все имена столбцов легко
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>'; ?>
аналогично ответ отправлен @suganya это не дает прямого ответа на вопрос, но является более быстрой альтернативой для одной таблицы:
DESCRIBE column_name;
Я написал эту глупую вещь давно и до сих пор на самом деле использовать его время от времени:
https://gist.github.com/kphretiq/e2f924416a326895233d
в основном, он делает "показать таблицы", затем "описать" на каждой таблице, а затем выплевывает его как markdown.
просто отредактируйте ниже "если имя" и уходят. Вам нужно будет установить pymysql.
Piggybacking на ответ Николы с некоторым читаемым 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>";
вопрос :
есть ли быстрый способ получить все имена столбцов из всех таблиц в MySQL, без необходимости перечислять все таблицы?
SQL, чтобы получить всю информацию для каждого столбца
select * from information_schema.columns where table_schema = 'your_db' order by table_name,ordinal_positionSQL, чтобы получить все имена столбцов
select COLUMN_NAME from information_schema.columns where table_schema = 'your_db' order by table_name,ordinal_position
Comments