MySQL의 모든 테이블에 대한 모든 열 이름을 얻는 방법은 무엇입니까?


189

모든 테이블 MySQL을 나열하지 않고의 모든 테이블에서 모든 열 이름을 가져 오는 빠른 방법이 있습니까?


2
데이터베이스에 대한 간단한 개요 만 있으면됩니다. 앱에서 코드가되지 않습니다.
dieter

답변:


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

그것은 내가 찾고 있던 것이 었습니다 :-) 지금까지 같은 일을하는 자바 응용 프로그램을 작성
dieter

감사! 열 이름 만 가져 오려면 다음을 사용하십시오. information_schema.columns에서 column_name을 선택하십시오. 여기서 table_schema = 'your_db'는 table_name, ordinal_position을 기준으로 정렬
Phil Goetz

정확히 내가 찾던 것! 감사.
zookastos

열 이름 앞에 채워진 데이터 수를 얻는 방법은 무엇입니까? 나는 같은 문제와 데이터 수를 더한
Gulmuhammad Akbari

기본 키를 아는 것은 어떻습니까?
David Walser

48

MySQL에서 테이블의 모든 필드를 나열하려면 다음을 수행하십시오.

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

27

다음 쿼리를 사용하여 모든 열 이름을 쉽게 얻는 것이 좋습니다.

Show columns from tablename


때때로 당신은 information_schema에 의존하지 않는 솔루션이 필요합니다
Bradley M. Davis

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

의견을 말할 충분한 담당자가 없기 때문에 여기에 nick rulez의 훌륭한 답변에 대한 약간의 개선 사항 WHERE table_schema = 'your_db'WHERE table_schema = DATABASE()있습니다.


도움이됩니다. 피할 수있을 때 항상 그런 것들을 하드 코딩하는 것은 항상 귀찮습니다. 감사.
David

17

다른 사람에게 유용하다는 것을 깨달으면 각 테이블의 쉼표로 구분 된 열 목록이 표시됩니다.

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 제한을 알고 있어야합니다 .


1
모든 열 이름을 쉽게 복사 할 수 있기 때문에 이것을 좋아합니다.
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
2016 년에 이것을 읽는 사람-mysql_query는 더 이상 사용되지 않습니다. 앞으로 PHP의 mysqli를 사용하는 것이 가장 좋습니다.
JCutting8


4

문제는 :

모든 테이블을 나열하지 않고 MySQL의 모든 테이블에서 모든 COLUMN NAMES를 가져 오는 빠른 방법이 있습니까?

각 열에 대한 모든 정보를 얻는 SQL

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

모든 열 이름을 가져 오는 SQL

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

3

나는 오래 전에이 바보 같은 것을 썼고 실제로 실제로 그것을 사용하고 있습니다.

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

기본적으로 "SHOW TABLES"를 수행 한 다음 각 테이블에서 "DESCRIBE"를 수행 한 다음 마크 다운으로 뱉어냅니다.

"if name " 아래에서 편집 하여 이동하십시오. pymysql이 설치되어 있어야합니다.


3

읽을 수있는 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>";

1
'일부 읽을 수있는 PHP'.. a, b, c로 명명 된 변수는 내가 읽을 수있는 것이 아닙니다.
Kaymaz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.