오라클 테이블, 컬럼, pk, comment, data type 조회
개발관련/DB관련(Oracle) :
2023. 1. 14. 15:22
SELECT
'EDW' AS 시스템명
,T3.OWNER
,T3.TABLE_COMMENT AS 엔티티명
,TC1.TABLE_NAME AS 테이블명
,T3.COLUMNS_COMMENTS AS 속성명
,TC1.COLUMN_NAME AS 컬럼명
,TC1.DATA_TYPE AS DATA_TYPE
,CASE WHEN TC1.DATA_TYPE ='NUMBER' THEN TO_NUMBER(TC1.DATA_LENGTH||'.'||TC1.DATA_SCALE)
ELSE TC1.DATA_LENGTH END AS LENGTH
,T2.PK_YN AS PK
-- ,NULL AS FK_YN
-- ,TC1.DATA_LENGTH AS LENG
-- ,TC1.DATA_SCALE AS SCAL
,CASE WHEN TC1.NULLABLE='N' THEN 'Y'
WHEN TC1.NULLABLE='Y' THEN ''
ELSE NULL
END AS NOT_NULL
,TC1.COLUMN_ID
FROM
/* PK컬럼여부*/
USER_TAB_COLUMNS TC1
LEFT OUTER JOIN (
/* PK컬럼여부 */
SELECT A.TABLE_NAME, B.COLUMN_NAME, CASE WHEN constraint_typE='P' THEN 'Y' END AS PK_YN
FROM user_CONSTRAINTS A
INNER JOIN user_CONS_COLUMNS B
ON a.owner=b.owner and A.TABLE_NAME=B.TABLE_NAME and a.constraint_name=b.constraint_name
where constraint_type IN ('P', 'U')
--ORDER BY A.TABLE_NAME, B.COLUMN_NAME
) T2
ON TC1.TABLE_NAME=T2.TABLE_NAME AND TC1.COLUMN_NAME=T2.COLUMN_NAME
LEFT OUTER JOIN (
/*컬럼코멘트*/
select
T1.OWNER
,T1.TABLE_NAME AS TABLE_ID
,T1.COMMENTS AS TABLE_COMMENT
,T2.COLUMN_NAME
,T2.COMMENTS AS COLUMNS_COMMENTS
FROM all_tab_comments T1
INNER JOIN ALL_COL_COMMENTS T2
ON T1.table_name=T2.table_name
) T3
ON TC1.TABLE_NAME=T3.TABLE_ID AND TC1.COLUMN_NAME=T3.COLUMN_NAME
WHERE T3.OWNER='EDW' AND TC1.TABLE_NAME IN ( 'TABLE_NAME')
ORDER BY TC1.TABLE_NAME, TC1.COLUMN_ID;
반응형
'개발관련 > DB관련(Oracle)' 카테고리의 다른 글
특정일자를 기준으로 7일씩 잘라서 n주차를 표시해주는 쿼리 (0) | 2023.03.26 |
---|---|
오라클 달력으로 프로시저 반복문 처리 (0) | 2023.03.21 |
date 타입과 timestamp 타입 조회 (0) | 2022.09.23 |
튜닝 연습 (0) | 2021.10.30 |
Oracle/PLSQL: Dealing with apostrophes/single quotes in strings (0) | 2011.06.15 |