개발로 자기계발
article thumbnail
728x90

테이블을 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
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)