[MySQL] 테이블 명세서 추출 쿼리(인덱스 포함)

2023. 6. 13. 12:49·Database & Data/MySQL
728x90
SMALL

테이블을 DB에 들어가서 보는 것이 아닌 문서로 빠르게 찾아보기 위해서 정리하기로 했다.

하나하나씩 컬럼을 확인해서 적을 수는 없기 때문에 쿼리로 추출을 할 수 있다.

나중에 후임을 위해서라도,,?

 

기본적인 정보를 다 담고 싶었고 쿼리가 길다..

 

스키마 전체 테이블 추출

SELECT 
    t1.table_name as '테이블명(영문)',
    t1.table_comment as '테이블명(한글)',
    t2.column_name as '컬럼명(영문)', 
    t2.column_comment as '컬럼명(한글)',
    t2.column_type as '데이터 타입',
    t2.column_key as 'key 타입',
    t2.extra as '컬럼 옵션',
    t2.is_nullable as 'Null 가능 여부',
    t2.column_default as '기본 값',
    t3.index_name as '인덱스명',
    t3.index_type as '인덱스타입'
FROM
    (SELECT 
        table_name, table_comment
    FROM
        information_schema.TABLES
    WHERE
        table_schema = '스키마 이름' ) t1
JOIN
    (SELECT 
        table_name,
            column_name,
            data_type,
            column_type,
            column_key,
            is_nullable,
            column_default,
            extra,
            column_comment,
            ordinal_position
    FROM
        information_schema.COLUMNS
    WHERE
        table_schema = '스키마 이름') t2
ON
    t1.table_name = t2.table_name
LEFT JOIN
    (SELECT 
        table_name, 
        column_name,
        index_name,
        index_type
    FROM
        information_schema.STATISTICS
    WHERE
        table_schema = '스키마 이름') t3
ON
    t1.table_name = t3.table_name AND t2.column_name = t3.column_name
ORDER BY t1.table_name , t2.ordinal_position;

 

특정 테이블만 추출

SELECT 
    t1.table_name as '테이블명(영문)',
    t1.table_comment as '테이블명(한글)',
    t2.column_name as '컬럼명(영문)', 
    t2.column_comment as '컬럼명(한글)',
    t2.column_type as '데이터 타입',
    t2.column_key as 'key 타입',
    t2.extra as '컬럼 옵션',
    t2.is_nullable as 'Null 가능 여부',
    t2.column_default as '기본 값',
    t3.index_name as '인덱스명',
    t3.index_type as '인덱스타입'
FROM
    (SELECT 
        table_name, table_comment
    FROM
        information_schema.TABLES
    WHERE
        table_schema = '스키마 이름' 
        AND table_name IN ('테이블 이름')) t1
JOIN
    (SELECT 
        table_name,
            column_name,
            data_type,
            column_type,
            column_key,
            is_nullable,
            column_default,
            extra,
            column_comment,
            ordinal_position
    FROM
        information_schema.COLUMNS
    WHERE
        table_schema = '스키마 이름') t2
ON
    t1.table_name = t2.table_name
LEFT JOIN
    (SELECT 
        table_name, 
        column_name,
        index_name,
        index_type
    FROM
        information_schema.STATISTICS
    WHERE
        table_schema = '스키마 이름') t3
ON
    t1.table_name = t3.table_name AND t2.column_name = t3.column_name
ORDER BY t1.table_name , t2.ordinal_position;

 

결과물

728x90
SMALL
저작자표시 비영리 변경금지

'Database & Data > MySQL' 카테고리의 다른 글

MySQL Root 계정 비밀번호 설정과 확인 방법(mysql_config_editor)  (0) 2023.06.25
AWS EC2에 MySQL 8 Community Edition 설치하기  (0) 2023.06.20
MySQL에서 플러그인과 컴포넌트란?  (0) 2023.06.12
생각나는 MySQL 명령어 파보기 - 4  (0) 2023.06.12
생각나는 MySQL 명령어 파보기 - 3  (0) 2023.06.02
'Database & Data/MySQL' 카테고리의 다른 글
  • MySQL Root 계정 비밀번호 설정과 확인 방법(mysql_config_editor)
  • AWS EC2에 MySQL 8 Community Edition 설치하기
  • MySQL에서 플러그인과 컴포넌트란?
  • 생각나는 MySQL 명령어 파보기 - 4
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
[MySQL] 테이블 명세서 추출 쿼리(인덱스 포함)
상단으로

티스토리툴바