개발자 미니민의 개발스터디

[Oracle] 오라클 - 데이터 딕셔너리 (Data Dictionary)

by mini_min
[Oracle]
오라클 - 데이터 딕셔너리와 제약조건

✔️ 데이터 딕셔너리

: 데이터베이스 자원을 효율적으로 관리하기 위해 다양한 정보를 저장하는 시스템 테이블 

: 사용자는 데이터 사전의 내용을 직접 수정하거나 삭제할 수 없다.

: 사용자가 조회해보면 암호 같은 기호만 보여지고 내용은 알 수 없다. 

 

: 딕셔너리 뷰와 동적 성능 뷰로 구분

: 오라클은 데이터 딕셔너리 내용을 사용자가 이해할 수 있는 내용으로 변환하여 제공

: 뷰 액세스 가능 범위에 따라 USER, ALL, DBA 영역으로 구분 

 

 

 

✔️ 주요 데이터 사전

 -- 모든 데이터 사전 테이블 정보 확인

SELECT COUNT(*) FROM dictionary;
SELECT * FROM dictionary;

 

 

-- 현재 사용자의 모든 객체 정보

SELECT * FROM user_objects;

 

 

-- 테이블 정보 확인

SELECT * FROM tabs; = user_tables 가능
SELECT * FROM tab;	--뷰. 간단하게 출력

 

 

--  테이블의 컬럼 정보 확인(테이블명은 대문자로)

SELECT * FROM cols; = user_tab_columns; 유사하다.
SELECT * FROM col;

SELECT * FROM cols WHERE table_name = 'EMP';

 

 

-- 제약 조건 확인

SELECT * FROM user_constraints;
SELECT * FROM user_constraints WHERE table_name = 'EMP';

 

 

🔒 여기서부터 암기 불가

 -- 제약조건 및 컬럼 확인 (💡💡💡 공식같은 걸로 준 것 //암기 어려우니까...)

SELECT u1.table_name, column_name, constraint_type, u1.constraint_name, search_condition
        FROM user_constraints u1
        JOIN user_cons_columns u2 ON u1.constraint_name = u2.constraint_name
        WHERE u1.table_name = UPPER('테이블명');

 

 

-- 부와 자 관계의 모든 테이블 출력

SELECT fk.owner, fk.constraint_name,
                    pk.table_name parent_table, fk.table_name child_table
        FROM all_constraints fk, all_constraints pk 
        WHERE fk.r_constraint_name = pk.constraint_name AND fk.constraint_type = 'R'
        ORDER BY fk.table_name;

 

 

-- 『테이블명』을 참조하는 모든 테이블 목록 출력(자식 테이블 목록 출력)

SELECT fk.owner, fk.constraint_name , fk.table_name 
        FROM all_constraints fk, all_constraints pk 
        WHERE fk.r_constraint_name = pk.constraint_name 
                   AND fk.constraint_type = 'R' 
                   AND pk.table_name = UPPER('테이블명')
        ORDER BY fk.table_name;

 

 

-- 『테이블명』이 참조하고 있는 모든 테이블 목록 출력(부모 테이블 목록 출력)

SELECT table_name FROM user_constraints
        WHERE constraint_name IN (
              SELECT r_constraint_name 
              FROM user_constraints
              WHERE table_name = UPPER('테이블명') AND constraint_type = 'R'
          );

 

 

 -- 『테이블명』의 부모 테이블 목록 및 부모 컬럼 목록 출력
        --  부모 2개 이상으로 기본키를 만든 경우 여러번 출력 됨

SELECT fk.constraint_name, fk.table_name child_table, fc.column_name child_column,
                    pk.table_name parent_table, pc.column_name parent_column
        FROM all_constraints fk, all_constraints pk, all_cons_columns fc, all_cons_columns pc
        WHERE fk.r_constraint_name = pk.constraint_name
                   AND fk.constraint_name = fc.constraint_name
                   AND pk.constraint_name = pc.constraint_name
                   AND fk.constraint_type = 'R'
                   AND pk.constraint_type = 'P'
                   AND fk.table_name = UPPER('테이블명');

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기