[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('테이블명');
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - UNIQUE 제약 조건 / NOT NULL 제약 조건 / DEFAULT (0) | 2022.08.10 |
---|---|
[Oracle] 오라클 - 데이터 제약 조건 / 기본키 설정 (0) | 2022.08.10 |
[Oracle] 오라클 - DML (데이터 수정, 삭제 UPDATE/DELETE/MERGE) (0) | 2022.08.10 |
[Oracle] 오라클 - DML ( 데이터 추가 INSERT/서브쿼리/다중행 추가) (0) | 2022.08.10 |
[Oracle] 오라클 - DDL (컬럼 변경, 추가, 논리적 삭제 ALTER/DROP) (0) | 2022.08.10 |
블로그의 정보
개발자 미니민의 개발로그
mini_min