티스토리 뷰

통합 테이블 정의서 추출 SQL (PK, FK, Index 포함)

SELECT 
    A.TABLE_NAME AS "테이블명",
    T_COM.COMMENTS AS "테이블 설명",
    A.COLUMN_ID AS "순번",
    A.COLUMN_NAME AS "컬럼명",
    C_COM.COMMENTS AS "컬럼 설명",
    -- PK 여부
    (SELECT 'PK' FROM USER_CONSTRAINTS CON, USER_CONS_COLUMNS COL 
     WHERE CON.CONSTRAINT_NAME = COL.CONSTRAINT_NAME 
       AND CON.CONSTRAINT_TYPE = 'P' 
       AND COL.TABLE_NAME = A.TABLE_NAME 
       AND COL.COLUMN_NAME = A.COLUMN_NAME) AS "PK",
    -- FK 여부
    (SELECT 'FK' FROM USER_CONSTRAINTS CON, USER_CONS_COLUMNS COL 
     WHERE CON.CONSTRAINT_NAME = COL.CONSTRAINT_NAME 
       AND CON.CONSTRAINT_TYPE = 'R' 
       AND COL.TABLE_NAME = A.TABLE_NAME 
       AND COL.COLUMN_NAME = A.COLUMN_NAME) AS "FK",
    -- 포함된 인덱스명 (여러 개일 경우 쉼표로 구분)
    (SELECT LISTAGG(INDEX_NAME, ', ') WITHIN GROUP (ORDER BY INDEX_NAME)
     FROM USER_IND_COLUMNS 
     WHERE TABLE_NAME = A.TABLE_NAME AND COLUMN_NAME = A.COLUMN_NAME) AS "인덱스",
    -- 데이터 타입 상세
    A.DATA_TYPE || 
        CASE 
            WHEN A.DATA_TYPE IN ('VARCHAR2', 'CHAR', 'RAW') THEN '(' || A.DATA_LENGTH || ')'
            WHEN A.DATA_TYPE = 'NUMBER' AND A.DATA_PRECISION IS NOT NULL AND A.DATA_SCALE > 0 
                THEN '(' || A.DATA_PRECISION || ',' || A.DATA_SCALE || ')'
            WHEN A.DATA_TYPE = 'NUMBER' AND A.DATA_PRECISION IS NOT NULL 
                THEN '(' || A.DATA_PRECISION || ')'
            ELSE '' 
        END AS "데이터 타입",
    CASE WHEN A.NULLABLE = 'N' THEN 'No' ELSE 'Yes' END AS "NULL 허용",
    A.DATA_DEFAULT AS "기본값"
FROM 
    USER_TAB_COLUMNS A
LEFT JOIN USER_TAB_COMMENTS T_COM ON A.TABLE_NAME = T_COM.TABLE_NAME
LEFT JOIN USER_COL_COMMENTS C_COM ON A.TABLE_NAME = C_COM.TABLE_NAME AND A.COLUMN_NAME = C_COM.COLUMN_NAME
WHERE 
    A.TABLE_NAME NOT LIKE 'BIN$%'
ORDER BY 
    A.TABLE_NAME, A.COLUMN_ID;

📝 추가된 기능 설명

  1. FK(Foreign Key) 표시: 해당 컬럼이 다른 테이블을 참조하는 외래키인 경우 'FK'로 표시됩니다.
  2. 인덱스(Index) 정보: 해당 컬럼이 인덱스에 포함되어 있다면 인덱스명을 보여줍니다. 한 컬럼이 여러 인덱스에 포함된 경우 LISTAGG 함수를 통해 한 칸에 모두 표시되도록 했습니다.
  3. 데이터 타입 정밀도: NUMBER(10, 2) 등 소수점 자리수까지 정확하게 표현됩니다.

💡 산출물 정리 팁 (엑셀 활용)

  1. 필터링: 엑셀로 저장한 후, **'테이블 설명'**이 비어있는 행을 필터링하면 코멘트 누락 여부를 쉽게 점검할 수 있습니다.
  2. 가독성: 엑셀의 **'중복된 항목 제거'**나 **'조건부 서식'**을 활용해 테이블명이 바뀔 때마다 구분선을 넣어주면 훨씬 보기 좋습니다.
  3. 대문자 주의: 만약 특정 테이블 정보만 보고 싶다면 쿼리 끝에 AND A.TABLE_NAME = 'MY_TABLE_NAME'을 추가하세요. (반드시 대문자!)

 

 

  • 테이블 코멘트 추가: COMMENT ON TABLE 테이블명 IS '설명';
  • 컬럼 코멘트 추가: COMMENT ON COLUMN 테이블명.컬럼명 IS '설명';

※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함