오라클이나 티베로에서는 아래와 방법으로 테이블 목록을 조회할 수 있습니다.
SELECT A.OWNER
, A.TABLE_NAME
, A.TABLESPACE_NAME
, B.COMMENTS
FROM DBA_TABLES A
, DBA_TAB_COMMENTS B
WHERE A.OWNER = B.OWNER
AND A.TABLE_NAME = B.TABLE_NAME
AND A.OWNER = ?
DBA_TABLES는 테이블에 대한 메타 정보이고, DBA_TAB_COMMENTS는 테이블의 코멘트에 대한 메타 정보입니다. 두 가지 정보를 조합하면 아래와 같이 현재 OWNER 소유의 테이블 목록을 구할 수 있습니다. (코멘트는 테이블에 대한 코멘트입니다)
OWNER | TABLE_NAME | TABLESPACE_NAME | COMMENTS |
TEST_OWNER | TABLE_A | TBLSPC_01 | 사용자 테이블 |
TEST_OWNER | TABLE_B | TBLSPC_01 | 부서 테이블 |
TEST_OWNER | TABLE_C | TBLSPC_02 | 로그 테이블 |
TEST_OWNER | TABLE_D | TBLSPC_02 | 권한 테이블 |
TEST_OWNER | TABLE_E | TBLSPC_02 | 사용자별 권한 테이블 |
또 다른 메타 정보를 이용하면 테이블의 컬럼 목록도 조회할 수 있습니다.
SELECT A.OWNER
, A.TABLE_NAME
, B.COMMENTS
, A.COLUMN_NAME
, C.COMMENTS
, A.DATA_TYPE
, A.DATA_LENGTH
FROM DBA_TAB_COLS A
, DBA_TAB_COMMENTS B
, DBA_COL_COMMENTS C
WHERE A.OWNER = B.OWNER
AND A.TABLE_NAME = B.TABLE_NAME
AND A.OWNER = C.OWNER
AND A.TABLE_NAME = C.TABLE_NAME
AND A.COLUMN_NAME = C.COLUMN_NAME
AND A.OWNER = ?
AND A.TABLE_NAME = ?
DBA_TAB_COLS는 테이블 별 컬럼에 대한 메타 정보이고, DBA_COL_COMMENTS는 컬럼의 코멘트에 대한 메타 정보입니다. 특정 OWNER에 속하는 모든 테이블의 정보를 조회하고 싶으면 A.OWNER 조건만 주면 되고, 특정 테이블에 대한 정보를 조회하고 싶으면 A.TABLE_NAME 조건도 사용하시면 됩니다.
300x250
'DB' 카테고리의 다른 글
MySQL UPDATE/DELETE ERROR (You can't specify target table TABLE for update in FROM clause) (0) | 2023.01.18 |
---|