Operating System/ORACLE

[ORACLE] 뷰(Simple 뷰, Complex 뷰)

Growing DBA 2022. 2. 14. 11:41
728x90
반응형

* 뷰(View) 

CREATE [ OR REPLACE ] [ FORCE | NOFORCE ] VIEW view name [ alias...]
AS sub query
[ WITH CHECK OPTION [ CONSTRAINT constraint name ] ]
[ WITH READ ONLY [ CONSTRAINT constraint name ] ]

* Force / Noforce

-> 뷰를 생성하는 대부분의 경우는 베이스 테이블이 존재한다는 가정하에서 이루어진다. 하지만 베이스 테이블이 존재하지 않는 경우에도 뷰를 생성할 수가 있는데 이때는 Force 옵션을 적용할 수 있다. Noforce 옵션의 경우는 뷰를 생성할 때 반드시 베이스 테이블이 존재해야 한 한다는 것을 의미한다. 특별한 설정이 없다면 Noforce 옵션을 기본적으로 사용한다. 

 

* With check option

-> 뷰를 생성할 때 사용한 컬럼 값을 변경하지 못하도록 설정해준다.

 

* With read only

-> 생성하고 있는 뷰를 통해서 DML을 수행할 수 없다는 옵션을 지정해준다. 뷰를 생성하고 나면 다음과 같은 과정이 가능해진다. 

-> user_views라는 데이터 딕셔너리 뷰에 해당 뷰의 정보가 저장된다.

-> 뷰를 통해서 베이스 테이블의 정보를 쿼리 또는 갱신할 수 있다. 


* Simple 뷰

-> 뷰를 생성할 때 테이블로서 하나의 테이블을 사용하게 되며 뷰를 만들 때 함수(Function)라든지 그룹을 이루어서 생성할 수 없다. 그리고 Simple 뷰를 통해서는 아무 문제없이 베이스 테이블에 대한 DML 문장을 실행할 수 있다는 장점이 있다.


* Complex 뷰

-> Complex 뷰는 베이스 테이블로서 하나 이상의 테이블을 사용하며 뷰를 만들 때 함수라든지 그룹을 이루어서 생성할 수 있다. Simple 뷰와 비교할 때 중요하게 고려해야 하는 점은 바로 Complex 뷰를 통한 베이스 테이블에 대한 DML 처리 문제이다. Complex 뷰를 통해서 DML을 수행할 수 있지만 항상 그런 것은 아니다. 

 

728x90
반응형