Database
Database 테이블 정의서 및 컬럼구조 쿼리를 통해 가져오기
Foolishdevil
2011. 10. 12. 10:24
해당 스키마에 존재하는 테이블에 대한 구조를 쿼리를 통해서 가져옵니다.
SQL Server에서는 사용해보지 않았습니다. Oracle에서 사용!!
SQL Server에서는 사용해보지 않았습니다. Oracle에서 사용!!
SELECT DECODE(COLUMN_ID, 1, A1.TABLE_NAME, '') TABLE_NAME ,DECODE(COLUMN_ID, 1, A1.TABLE_COMMENTS, '') TABLE_COMMENTS ,A1.COLUMN_ID ,A1.COLUMN_NAME ,A1.COLUMN_COMMENTS ,DECODE(B1.CONSTRAINT_TYPE, 'P', 'Y') PK_FLAG ,DECODE(A1.NULL_FLAG, '', 'NOT NULL', '') NULL_FLAG ,A1.DATA_TYPE || (CASE A1.DATA_TYPE WHEN 'NUMBER' THEN '(' || TO_CHAR(A1.DATA_LENGTH) || ',' || TO_CHAR(A1.DATA_PRECISION) || ')' WHEN 'DATE' THEN ' ' ELSE '(' || A1.DATA_LENGTH || ')' END) DATA_TYPE ,C1.DATA_DEFAULT FROM ( SELECT B.COMMENTS TABLE_COMMENTS ,A.TABLE_NAME TABLE_NAME ,C.COMMENTS COLUMN_COMMENTS ,A.COLUMN_NAME COLUMN_NAME ,(CASE A.NULLABLE WHEN 'Y' THEN 'Y' END) NULL_FLAG , A.DATA_TYPE DATA_TYPE , A.DATA_LENGTH , A.COLUMN_ID AS COLUMN_ID , A.DATA_PRECISION FROM USER_TAB_COLUMNS A ,USER_TAB_COMMENTS B ,USER_COL_COMMENTS C WHERE A.TABLE_NAME = B.TABLE_NAME AND (A.TABLE_NAME = C.TABLE_NAME AND A.COLUMN_NAME = C.COLUMN_NAME) AND B.TABLE_TYPE = 'TABLE' ) A1, ( SELECT A.TABLE_NAME ,A.COLUMN_NAME ,B.CONSTRAINT_TYPE FROM USER_CONS_COLUMNS A ,USER_CONSTRAINTS B WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND B.CONSTRAINT_TYPE IN ('P', 'R') ) B1, ( SELECT TABLE_NAME, COLUMN_NAME, DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE DATA_DEFAULT IS NOT NULL ) C1 WHERE A1.TABLE_NAME = B1.TABLE_NAME(+) AND A1.COLUMN_NAME = B1.COLUMN_NAME(+) AND A1.TABLE_NAME = C1.TABLE_NAME(+) AND A1.COLUMN_NAME = C1.COLUMN_NAME(+) ORDER BY A1.TABLE_NAME, A1.COLUMN_ID SELECT DECODE(COLUMN_ID, 1, A1.TABLE_NAME, '') TABLE_NAME ,DECODE(COLUMN_ID, 1, A1.TABLE_COMMENTS, '') TABLE_COMMENTS ,A1.COLUMN_ID ,A1.COLUMN_NAME ,A1.COLUMN_COMMENTS ,DECODE(B1.CONSTRAINT_TYPE, 'P', 'Y') PK_FLAG ,DECODE(A1.NULL_FLAG, '', 'NOT NULL', '') NULL_FLAG ,A1.DATA_TYPE || (CASE A1.DATA_TYPE WHEN 'NUMBER' THEN '(' || TO_CHAR(A1.DATA_LENGTH) || ',' || TO_CHAR(A1.DATA_PRECISION) || ')' WHEN 'DATE' THEN ' ' ELSE '(' || A1.DATA_LENGTH || ')' END) DATA_TYPE ,C1.DATA_DEFAULT FROM ( SELECT B.COMMENTS TABLE_COMMENTS ,A.TABLE_NAME TABLE_NAME ,C.COMMENTS COLUMN_COMMENTS ,A.COLUMN_NAME COLUMN_NAME ,(CASE A.NULLABLE WHEN 'Y' THEN 'Y' END) NULL_FLAG , A.DATA_TYPE DATA_TYPE , A.DATA_LENGTH , A.COLUMN_ID AS COLUMN_ID , A.DATA_PRECISION FROM USER_TAB_COLUMNS A ,USER_TAB_COMMENTS B ,USER_COL_COMMENTS C WHERE A.TABLE_NAME = B.TABLE_NAME AND (A.TABLE_NAME = C.TABLE_NAME AND A.COLUMN_NAME = C.COLUMN_NAME) AND B.TABLE_TYPE = 'TABLE' ) A1, ( SELECT A.TABLE_NAME ,A.COLUMN_NAME ,B.CONSTRAINT_TYPE FROM USER_CONS_COLUMNS A ,USER_CONSTRAINTS B WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND B.CONSTRAINT_TYPE IN ('P', 'R') ) B1, ( SELECT TABLE_NAME, COLUMN_NAME, DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE DATA_DEFAULT IS NOT NULL ) C1 WHERE A1.TABLE_NAME = B1.TABLE_NAME(+) AND A1.COLUMN_NAME = B1.COLUMN_NAME(+) AND A1.TABLE_NAME = C1.TABLE_NAME(+) AND A1.COLUMN_NAME = C1.COLUMN_NAME(+) ORDER BY A1.TABLE_NAME, A1.COLUMN_ID출처:.. 선배님의 인터넷 검색!!x