Oracle 전체 테이블, 테이블 별 데이터 수 조회 (ALL_TABLES, ALL_TAB_COLUMNS)
업무 과정에서 여러 테이블에 대해 각 테이블의 데이터 수를 조회하는 등, 여러 테이블의 정보를 한 번에 조회해야 하는 상황이 생길 수 있는데요.
해당 포스팅에서는 Oracle Database의 'ALL_TABLES', 'USER_TABLES', 'ALL_TAB_COLUMNS', 'ALL_TAB_COMMENTS' 뷰(view)를 활용하여 데이터베이스의 테이블 및 컬럼 정보를 조회하는 방법에 대해서 살펴보겠습니다.
ALL_TABLES, USER_TABLES
-- 사용자가 접근할 수 있는 모든 테이블을 기준으로 특정 테이블 정보 조회
SELECT *
FROM ALL_TABLES
WHERE TABLE_NAME = '테이블명';
-- 사용자가 소유하고 있는 모든 테이블을 기준으로 특정 테이블 정보 조회
SELECT *
FROM USER_TABLES
WHERE TABLE_NAME = '테이블명';
먼저 'ALL_TABLES' 뷰는 현재 사용자가 접근할 수 있는 모든 테이블에 대한 정보를 제공합니다.
주요 컬럼으로는 OWNER(테이블이 속한 스키마), TABLE_NAME(테이블의 이름), TABLESPACE_NAME(테이블이 저장된 테이블스페이스 이름), NUM_ROWS(행의 개수), STATUS(테이블의 상태) 등이 있습니다.
반면 'USER_TABLES' 뷰는 현재 사용자가 소유한 테이블에 대한 정보를 제공하는데요.
USER_TABLES 뷰의 컬럼은 OWNER를 제외하고 ALL_TABLES 뷰와 동일한 컬럼을 가지고 있습니다.
-- 사용자가 접근할 수 있는 모든 테이블을 기준으로 특정 테이블의 테이블명과 데이터 수 조회
SELECT TABLE_NAME, NUM_ROWS
FROM ALL_TABLES
WHERE TABLE_NAME = '테이블명';
-- 사용자가 소유하고 있는 모든 테이블을 기준으로 특정 테이블의 테이블명과 데이터 수 조회
SELECT TABLE_NAME, NUM_ROWS
FROM USER_TABLES
WHERE TABLE_NAME = '테이블명';
각각의 테이블에 대한 데이터 수를 조회할 때는 다음과 같이 'NUM_ROWS' 컬럼을 활용할 수 있습니다.
ALL_TAB_COLUMNS, ALL_TAB_COMMENTS
ALL_TABLES, USER_TABLES 뷰 외에도 ALL_TAB_COLUMNS 뷰를 통해 테이블의 컬럼 정보, ALL_TAB_COMMENTS 뷰를 통해 테이블 코멘트 정보를 확인하여 활용할 수 있는데요.
-- 사용자가 접근할 수 있는 모든 테이블을 기준으로 특정 테이블에 대한 컬럼 정보를 조회
SELECT *
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = '테이블명';
'ALL_TAB_COLUMNS' 뷰의 경우 현재 사용자가 접근할 수 있는 모든 테이블에 대한 컬럼 정보를 제공합니다.
주요 컬럼으로는 OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE 등이 있습니다.
-- 사용자가 접근할 수 있는 모든 테이블을 기준으로 특정 테이블에 대한 코멘트 정보를 조회
SELECT *
FROM ALL_TAB_COMMENTS
WHERE TABLE_NAME = '테이블명';
-- ALL_TABLES, ALL_TAB_COMMENTS 뷰를 활용하여 테이블명, 테이블 코멘트, 테이블의 데이터 수 조회
SELECT A.TABLE_NAME, B.COMMENTS, A.NUM_ROWS
FROM ALL_TABLES A
LEFT JOIN ALL_TAB_COMMENTS B
ON A.TABLE_NAME = B.TABLE_NAME;
'ALL_TAB_COMMENTS' 뷰는 현재 사용자가 접근할 수 있는 모든 테이블에 대한 코멘트 정보를 제공합니다.
주요 컬럼으로는 OWNER, TABLE_NAME, TABLE_TYPE, COMMENTS 컬럼이 있는데요.
위 예시 쿼리와 같이 TABLE_NAME을 기준으로 뷰를 조인하여 활용할 수도 있습니다.
Oracle Database 다양한 시스템 뷰(System View)
오라클에는 위 내용에서 사용한 뷰 외에도 다양한 시스템 뷰가 존재하는데요.
이러한 뷰들은 데이터베이스의 구조나 객체, 권한, 세션, 상태, 성능 등을 관리하고 모니터링하는 데 사용됩니다.
oracleXe11g 버전 기준 약 4천 개 정도의 view가 존재하며, oracle system views에 대한 더 자세한 내용은 아래 공식 문서를 참고해 주시면 좋을 것 같습니다.
< Oracle System Views Docs >
https://docs.oracle.com/database/timesten-18.1/TTSYS/systemtables.htm#TTSYS346
'Programming > Oracle' 카테고리의 다른 글
Oracle TABLESPACE란? 테이블스페이스 개념 정리 (1) | 2024.11.17 |
---|---|
서브쿼리 종류와 개념 정리(스칼라 서브쿼리, 인라인 뷰, 일반 서브쿼리) (0) | 2024.10.20 |
LISTAGG 함수 사용 방법 및 예시(여러 행의 값을 하나의 문자열로 결합할 때) (0) | 2024.09.15 |
CLOB, BLOB 데이터 타입과 mybatis에서 CLOB, BLOB 사용 방법 (0) | 2024.08.15 |
오라클 NULL 치환 함수 정리 (NVL, NVL2, COALESCE, NULLIF) (0) | 2024.06.06 |