본문 바로가기

IT/DB

(TIBERO) 티베로 테이블명세서 쿼리(SQL)

반응형

* SYS계정으로 조회를 해야 함.

 

WITH LIST AS
(
SELECT 
TB.*
, C.COMMENTS AS TABLE_COMMENTS
FROM (
    SELECT A.TABLE_NAME,
           A.COLUMN_NAME,
           A.DATA_TYPE,
           A.DATA_LENGTH,
           A.NULLABLE,
           A.COLUMN_ID + 1 AS SORT_NUM,
           A.DATA_DEFAULT,
           B.COMMENTS
    FROM   dba_tab_columns A,
           all_col_comments B
    WHERE  A.OWNER = B.OWNER
    AND    A.TABLE_NAME = B.TABLE_NAME
    AND    A.COLUMN_NAME = B.COLUMN_NAME
    AND    A.OWNER = 'DB명
    ) TB
    LEFT JOIN ALL_TAB_COMMENTS C ON  TB.TABLE_NAME = C.TABLE_NAME AND C.OWNER = 'DB명'
),
PKLIST AS
(
    SELECT C.TABLE_NAME,
           C.COLUMN_NAME,
           C.POSITION,
           S.CONSTRAINT_TYPE
    FROM DBA_CONS_COLUMNS C,
         DBA_CONSTRAINTS S
    WHERE C.OWNER = S.OWNER
    AND C.OWNER = 'DB명'
    AND C.CONSTRAINT_NAME = S.CONSTRAINT_NAME
    AND S.CONSTRAINT_TYPE IN ('P', 'R')
)
SELECT
TABLE_NAME AS "테이블명"
   , TABLE_COMMENTS AS "테이블 설명"
   , COLUMN_NAME AS "컬럼명"
   , SORT_NUM AS "순서"
   , DATA_TYPE AS "데이터 유형(길이)"
   , NULL_AT AS "NULL 여부"
   , PK AS "Key"
   , DATA_DEFAULT AS "디폴트"
   , COMMENTS AS "설명"
FROM (
SELECT L.TABLE_NAME
   , L.TABLE_COMMENTS
   , L.COLUMN_NAME
   , L.SORT_NUM
   , L.COMMENTS
   , L.DATA_TYPE || '(' || L.DATA_LENGTH || ')' AS DATA_TYPE
   , CASE WHEN L.NULLABLE = 'Y' THEN 'TRUE'
            ELSE 'FALSE'
       END AS NULL_AT
       , L.DATA_DEFAULT
       , CASE WHEN P.CONSTRAINT_TYPE = 'P' THEN 'PRI'
          WHEN P.CONSTRAINT_TYPE = 'R' THEN 'MUL'
            ELSE 'NULL'
       END AS PK
FROM LIST L,
     PKLIST P
WHERE L.TABLE_NAME = P.TABLE_NAME(+)
  AND L.COLUMN_NAME = P.COLUMN_NAME(+)
 ORDER BY L.TABLE_NAME
) TB
ORDER BY TABLE_NAME, SORT_NUM

반응형