* 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
'IT > DB' 카테고리의 다른 글
(Mysql, MariaDB) 테이블명세서 조회 쿼리 (0) | 2022.12.09 |
---|---|
(Mysql, MariaDB) mysql max_allowed_packet에러 났을 경우 (0) | 2022.12.09 |
(Tibero) 티베로 유저 생성 (0) | 2022.12.09 |
(Mysql, MariaDB) Mysql User(유저)생성 방법 (0) | 2022.12.09 |
(TIBERO) 티베로 커넥션 세션 조회 및 삭제 방법 (0) | 2022.12.08 |