VIEW 개념
- SELECT문의 실행 결과인 RESULT SET을 저장하는 객체
- 테이블 모양을 하고있지만 실제로 DB에 저장되지는 않는 논리적 가상 테이블
VIEW를 왜 사용할까?
- 논리적 가상 테이블로 존재하는 VIEW는 실제로 DB에 저장되지 않는 테이블이기 때문에 테이블의 진짜 모습(테이블명, 컬럼명, 데이터타입 등)을 감출 수 있어서 보안상 유리하다.
- 복잡한 SELECT문의 재사용이 용이하다.
VIEW 사용 주의사항
- 가상의 테이블이기 때문에 'ALTER'구문 사용 불가
- VIEW를 이용한 DML(INSERT/UPDATE/DELETE)이 가능한 경우도 있지만 많은 제약이 따른다.
특히 VIEW를 이용한 INSERT를 진행하게 될 경우 VIEW 가 아닌 원본테이블에 데이터가 삽입된다. 이 때 원본테이블에 존재하지 않는 컬럼에는 자동으로 NULL값이 삽입되는데 만약 VIEW에 포함되지 않은 컬럼에 NOT NULL 제약 조건이 설정되어 있는 경우, 정상적인 INSERT가 진행되지 않는다. 이러한 제약 사항들로 인해 VIEW의 원래 목적인 SELECT(조회) 용도에 맞게 사용하는 것을 권장한다. 이를 강제할 수 있는 옵션이 WITH READ ONLY 옵션이다.
VIEW 생성
- OR REPLACE : 기존 동일한 뷰 이름이 존재하는 경우 덮어쓰고, 존재하지 않으면 새로 생성
- FORCE / NOFORCE
- FORCE : 서브쿼리에 사용된 테이블이 존재하지 않아도 뷰 생성
- NOFORCE : 서브쿼리에 사용된 테이블이 존재해야만 뷰 생성(기본값)
- WITH CHECK OPTION : 옵션을 설정한 컬럼의 값을 수정 불가능하게 하게 하는 옵션
→ 컬럼레벨에서 제한 가능
- WITH READ ONLY 옵션 : 뷰에 대해 조회만 가능(DML 수행 불가)
* 주로 OR REPLACE, WITH READ ONLY옵션을 사용한다.
'Database' 카테고리의 다른 글
DB 구현 & SQL활용 (0) | 2022.09.20 |
---|---|
[SQL] SEQUENCE (0) | 2022.09.17 |
[SQL] DML - SELECT구문 (0) | 2022.09.04 |
[SQL] SQL(Structured Query Language) (0) | 2022.09.03 |
[SQL] 데이터베이스란 (0) | 2022.09.02 |