-
뷰(view)oracle/14장_뷰 2022. 12. 12. 12:12
뷰의 개념
- 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블
- 전체의 데이터 중, 일부만 접근할 수 있도록 제한하기 위한 방법
- 가상 테이블(virtual table) : 테이블은 디스크에 공간이 할당되어 저장, 뷰는 데이터 딕셔너리 테이블 뷰에
대한 정의만 저장 (디스크 저장공간이 할당되지 않음)
- 테이블에서 파생된 객체 테이블과 유사하게 사용
- 뷰에 대한 수정결과는 뷰를 정의한 기본 테이블에 적용
- 뷰를 정의한 기본 테이블에서 정의된 무결성 제약 조건 상속
- 뷰의 정의는 USER_VIEWS 데이터 딕셔너리 테이블에서 조회 가능
뷰의 장점
- 데이터를 보호하기 위한 보안(security)
전체 데이터의 일부만 접근할 수 있는 뷰를 정의하여 일반 사용자에게 해당 뷰만 접근 가능하도록
허용하여 중요한 데이터의 유출 방지 가능
- 사용자 편의성(flexibility)
전체 데이터의 일부만 접근할 수 있는 뷰를 정의하여 일반 사용자에게 해당 뷰만 접근
가능하도록 허용하여 중요한 데이터의 유출 방지 가능
뷰의 종류
- 단순 뷰(simple view)
하나의 기본 테이블에 의해 정의한 뷰, 단순 뷰에 DML 명령문 실행 가능, 처리 결과는 기본 테이블에 반영됨
- 복합 뷰(complex view)
두개 이상의 기본 테이블로 구성한 뷰
무결성 제약조건, 표현식, GROUP BY 절의 유무에 따라 DML 명령문의 제한적으로 사용가능
복합 뷰는 DISTINCT, 그룹 함수, GROUP BY, START WITH CONNECT BY, ROWNUM을 포함할 수 없음
UNION ALL, INTERSECT 등과 같은 집합 연산 실행 불가
뷰 생성
- CREATE VIEW 명령문 사용
- 뷰 생성시 칼럼 이름을 명시하지 않으면 기본 테이블의 칼럼 이름을 상속
- 함수나 표현식에 의해 정의된 칼럼은 별도의 이름을 반드시 명시해야함 (명시하지 않을 시 에러 발생)
사용법
- OR REPLACE : 기존 뷰와 동일한 이름으로 뷰를 재성상하는 경우
- FORCE : 기본 테이블의 존재 여부에 상관없이 뷰 생성
- NOFORCE : 기본 테이블이 존재할 경우에만 뷰 생성, 기본 값
- ALIAS : 기본 테이블의 칼럼 이름과 다르게 지정한 뷰의 칼럼 이름