Oracle SQL 강좌
데이터 사전(Data Dictionary) 정보조회 32 11 72,082

by 김정식 DICTIONARY DICT_COLUMNS USER_OBJECTS USER_TABLES TABS OBJ COLS Data Dictionary [2005.01.20]


데이터 사전의 괄호 명칭(dict, obj, tabs, cols..등)은 데이터사전의 시노님이다. 시노님을 이용하여 조회 할 수도 있다.

데이터 사전 뷰

DICTIONARY (DICT)
  • - 권한이 있는 데이터사전에 대한 데이터사전명과 설명 정보를 제공한다.
-- USER_INDEX로 시작하는 데이터사전을 조회하는 예이다. 
SELECT * 
  FROM DICT 
 WHERE TABLE_NAME LIKE 'USER_INDEX%';

DICT_COLUMNS
  • - 데이터사전의 컬럼에대한 정보를 조회 할 수 있다.
-- USER_INDEXES 데이터사전의 컬럼 정보를 조회하는 예이다 
SELECT * 
  FROM DICT_COLUMNS 
 WHERE TABLE_NAME ='USER_INDEXES';

자주 사용하는 데이터 사전

USER_OBJECTS (OBJ)
  • - 모든 객체(테이블, 인덱스, 시퀀스등..)에 대한 정보를 제공한다.
-- 사용자의 테이블명을 조회하는 예이다 
SELECT object_name 
  FROM USER_OBJECTS 
 WHERE object_type='TABLE';


-- 아래는 시노님을 이용해서 조회하는 예이다.
SELECT object_name 
  FROM obj 
 WHERE object_type='TABLE';

USER_TABLES (TABS)
  • - 테이블에 대한 정보를 제공한다.
-- 사용자가 소유한 테이블명과 테이블의 테이블스페이스를 조회하는 예이다. 
SELECT table_name, tablespace_name 
  FROM tabs;

USER_TAB_COLUMNS (COLS)
  • - 사용자가 소유한 테이블의 컬럼에 대한 정보를 제공한다.
-- DEPTNO 컬럼이 있는 테이블과 테이터타입, 데이터사이즈를 조회하는 예이다. 
SELECT table_name, data_type, data_length 
  FROM cols 
 WHERE column_name='DEPTNO' ;

USER_CONSTRAINTS, USER_CONS_COLUMNS
  • - USER_CONSTRAINTS : 사용자가 소유한 제약조건 정보 제공
  • - USER_CONS_COLUMNS : 컬럼에 할당된 제약조건 정보 제공
-- 입력받은 테이블의 제약조건 정보를 조회하는 예이다. 
SELECT SUBSTR(a.column_name,1,15) column_name,  
         DECODE(b.constraint_type,
             'P','PRIMARY KEY',
             'U','UNIQUE KEY',
             'C','CHECK OR NOT NULL',
             'R','FOREIGN KEY') constraint_type,  
       a.constraint_name  
  FROM user_cons_columns a, user_constraints b  
 WHERE a.table_name = UPPER('&table_name') 
   AND a.table_name = b.table_name  
   AND a.constraint_name = b.constraint_name  
 ORDER BY 1;  

-- 테이블 명을 입력 하면 된다.
table_name의 값을 입력하십시오: emp2 

COLUMN_NAME    CONSTRAINT_TYPE    CONSTRAINT_NAME
------------- ----------------- -----------------
DEPTNO           FOREIGN KEY         FK_DEPTNO
EMPNO            PRIMARY KEY         PK_EMP

USER_INDEXES (IND), USER_IND_COLUMNS
  • - USER_INDEXES(IND) : 사용자가 소유한 인덱스 정보 제공
  • - USER_IND_COLUMNS: 인덱스 컬럼에 대한 정보 제공
-- 사용자가 소유한 인덱스 정보를 조회하는 예이다. 
SELECT index_name, table_name, tablespace_name 
  FROM user_indexes;

주요 데이터 사전

USER_OBJECTS(OBJ) : 모든 오브젝트에 대한 정보를 지원, 오브젝트 유형, 작성시간, 오브젝트에 사용된 최종 DDL 명령, alter, grant 및 revoke 등

USER_TABLES(TABS) : 테이블에 대한 정보

USER_TAB_COLUMNS(COLS) : 컬럼에 대한 정보

USER_VIEWS : 뷰에 대한 정보

USER_SYNONYMS(SYN) : 동의어

USER_SEQUENCES(SEQ) : 시퀀스

USER_CONSTRAINTS : 제약조건

USER_CONS_COLUMNS : 제약 조건을 가진 열에 대한 정보

USER_TAB_COMMENTS : 테이블/뷰에 대한 주석

USER_COL_COMMENTS : 컬럼에 대한 주석

USER_INDEXES(IND) : 인덱스에 관한 정보

USER_IND_COLUMNS : 인덱스열에 대한 정보

USER_CLUSTERS(CLU) : 클러스터와 관련된 정보

USER_DB_LINKS : 데이터베이스 링크에 관련된 정보

USER_TRIGGERS : 트리거

USER_SOURCE : 프로시저, 함수 및 패키지

USER_ERRORS : 코드 오류

USER_TABLESPACES : 테이블스페이스

USER_USERS : 사용자

USER_TAB_PRIVS : 테이블 권한

USER_COL_PRIVS : 열 권한

USER_SYS_PRIVS : 시스템 권한

Oracle Database 전체 데이터사전

- 강좌 URL : http://www.gurubee.net/lecture/1850

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by smile [2005.11.09 20:31:31]
퍼갑니다. ^^

by 이현석 [2006.11.01 09:19:56]
퍼갑니다...

by playwant [2007.11.01 11:15:18]
퍼가요..ㅋ ^^

by 김윤경 [2007.11.07 10:06:11]
제약조건에 USER_CONSTRAINTS 입니다.

by blueskyg [2008.12.18 09:53:25]
퍼갑니다.

by 마한근 [2009.06.23 09:45:04]
잘 보았습니다

by 양한마리 [2010.02.03 13:33:05]
잘 읽었어요. 감사 ^ ^

by myway [2010.09.29 20:55:00]
/*
** 오라클 외래키 참조관계 조회 SQL
*/

SELECT
P.TABLE_NAME ||' : '|| CP.COMMENTS AS "부모테이블"
, C.COLUMN_NAME ||' : '|| CC.COMMENTS AS "외래키필드"
, R.TABLE_NAME ||' : '|| CR.COMMENTS AS "자식테이블"

FROM
USER_CONSTRAINTS R, USER_CONSTRAINTS P -- 제약조건
, USER_CONS_COLUMNS C -- 제약 조건을 가진 열에 대한 정보
, USER_TAB_COMMENTS CR, USER_TAB_COMMENTS CP -- 테이블/뷰에 대한 주석
, USER_COL_COMMENTS CC -- 컬럼에 대한 주석
WHERE
1=1
-- AND P.TABLE_NAME = upper('mut_cntr') -- 부모테이블 지정
-- AND R.TABLE_NAME = upper('mut_cntr') -- 자식테이블 지정
AND R.CONSTRAINT_TYPE = 'R'
AND R.R_CONSTRAINT_NAME = P.CONSTRAINT_NAME
AND R.CONSTRAINT_NAME = C.CONSTRAINT_NAME
AND R.TABLE_NAME = CR.TABLE_NAME AND CR.TABLE_TYPE = 'TABLE'
AND P.TABLE_NAME = CP.TABLE_NAME AND CP.TABLE_TYPE = 'TABLE'
AND C.TABLE_NAME = CC.TABLE_NAME AND C.COLUMN_NAME = CC.COLUMN_NAME
;

by 파이팅마모루 [2010.10.27 11:19:30]
정말 찾던 부분이었는데 감사합니다. :)

by kkj [2011.02.07 16:32:38]
감사합니다.^^

by 까망소 [2012.12.26 16:04:06]

이건 모~ 왠만한 오라클 기본서적을 찾을 필요가 없네요.
정말 훌륭한 바이블 입니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입