안내
본 문서는 블로그의 운영자인 본인이 Stackoverflow에 올린 답변을 정리한 글입니다.
Stackoverflow URL
http://stackoverflow.com/questions/20217452/mysql-fields-definition/20217618
질문
특정 DB 내에 존재하는 모든 테이블의 모든 컬럼을 1번에 조회하고자 한다. 어떻게 하는 것이 좋은가?
답변
다음과 같이 information_schema를 이용하여 쉽게 구할 수 있다.
SELECT TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION,
DATA_TYPE, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'db_name'
ORDER BY TABLE_NAME, ORDINAL_POSITION;
+------------+-------------+------------------+-----------+-------------+
| TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | DATA_TYPE | IS_NULLABLE |
+------------+-------------+------------------+-----------+-------------+
| a | a | 1 | int | YES |
| b | a | 1 | int | YES |
| test | name | 1 | varchar | YES |
| test | age | 2 | int | YES |
| test | spent | 3 | int | YES |
| test | gender | 4 | char | YES |
+------------+-------------+------------------+-----------+-------------+
ORDINAL_POSITION
은 테이블 내 컬럼이 정의된 순서를 의미한다.
“MySQL” 카테고리의 추천 글
- MySQL IN subquery 성능. IN sub query는 가급적 사용을 피하자
- MySQL의 IN() v.s. EXISTS v.s. INNER JOIN 성능 비교
- MySQL INNER JOIN v.s EXISTS 성능 비교
- JOIN에서 중복된 레코드 제거하기
- MySQL 중복 레코드 관리 방법 - INSERT IGNORE, REPLACE INTO, ON DUPLICATE UPDATE
- MySQL GROUP BY 성능 최적화를 위한 INDEX 설계
- MySQL Query Cache를 빠르게 비우기
- MySQL Plugin에 대한 간단한 소개
- MySQL InnoDB Index Statistics
- MySQL Foreign key 사용 시 주의 사항 (Can’t create table (errno: 150))