목차
1. View란?
2. View의 사용방법
2-1. 단일 테이블을 이용한 단순 View
2-2. 복합 테입블을 이용한 복합 View
2-3. WITH CHECK OPTION / WITH READ ONLY 옵션 알아보기
3. View의 장점 및 단점
4. View를 사용하는 이유
5. View에 관한 다른 정보
1. View란?
뷰의 의미는 하나의 select문과 같다고 생각하면 된다.
물론 뷰를 통해 insert, update, delete가 가능하지만 대개의 경우는 select를 위해 사용한다. 뷰란 한개 이상의 기본 테이블이나 다른 뷰를 이용하여 생성
되는 가상 테이블(virtual table)이다.
뷰는 기존에 생성된 테이블 또는 다른 뷰에서 접근할 수 있는 전체 데이터 중에서 일부만 접근할 수 있도록 제한하기 위한 기법이다.
뷰를 가상 테이블이라하는 이유는 테이블은 디스크 공간이 할당되어 데이터를 저장할 수 있지만, 뷰는 데이터 딕셔너리 테이블에 뷰에 대한 정의만 저장
저장하고 디스크에 저장 공간이 할당되지 않는다. 하지만 일반 사용자들은 SQL문을 사용하여 테이블에 저장된 데이터를 검색하고 조작하는 것과 유사하게 뷰를 이용할 수 있다.
- 뷰 자체는 데이터를 갖지 않지만, 기초 테이블의 데이터를 조회하고 수정할 수 있는 창과 같다.
- 뷰는 데이터 값이 아니라 실제적으로는 질의 문장만을 가진다.
- 물리적인 테이블을 근거한 논리적인 테이블
- 뷰는 기본 테이블에서 파생된 객체로서 기본 테이블에 대한 하나의 쿼리문(뷰테이블 X, 뷰쿼리 O)
- 사용자에게 주어진 뷰를 통해서 기본 테이블을 제한적으로 사용하게 된다.
2. View의 사용방법
2-1. 단일 테이블을 이용한 단순 View
- 하나의 테이블에서 특정한 조건에 맞는 레코드 들만 질의(QUERY)가능
- 하나의 테이블에서 특정한 컬럼들만 질의(QUERY)가능
2-2. 복합 테입블을 이용한 복합 View
- 여러 테이블의 칼럼을 모아서(JOIN) 하나의 테이블처럼 질의(QUERY)할 수 있도록 한 데이터베이스 오브젝트
2-3. WITH CHECK OPTION / WITH READ ONLY 옵션 알아보기
WITH CHECK OPTION
1. 뷰를 정의하는 서브 쿼리문에 WHERE절을 추가하여 기본 테이블 중 특정 조건에 만족하는 로우(행)만으로 구성된 뷰를 생성할 수 있다.
2. 이때 WHERE절에 WITH CHECK OPTION을 기술하면 그 조건에 의해 기본 테이블에서 정보가 추출하는 것이므로 조건에 사용 되어진 컬럼 값은
뷰를 통해서는 변경이 불가능하다.
WITH READ ONLY
3. View의 장점 및 단점
<장점>
- DB의 선택적인 부분만 보여주므로 접근을 제한
- 다양한 접근 경로 설정
- 복잡한 질의를 단순화
- 데이터의 독립성 제공
- 동일한 데이터를 또 다른 뷰로 표현
- 한 개의 뷰에 여러 테이블의 데이터를 검색 가능
- 한 개의 테이블로부터 여러 뷰를 생성 가능
<단점>
- 뷰의 정의를 변경할 수 없고 insert, delete, update에 많은 제한이 있음
4. View를 사용하는 이유
- 자주 쓰는 쿼리문을 안쓰고 테이블만 조회하면 된다.
- 보안에 유리하다.
- 뷰 테이블에 자료가 추가되는 것은 실체 테이블에 반영되지 않기 때문에 주의를 요한다.
5. View에 관한 다른 정보
복합 뷰(Nested View)를 최소화하라
뷰는 엄청난 쿼리를 사용자들로부터 가리는데 훌륭하지만, 하나의 뷰 안에 또 다른 뷰와 내부에 있는 다른 뷰를 (계속해서) 중첩시키다 보면 심각한 성능 저하를 유발할 수 있다. 너무 많은 수의 복합 뷰는 모든 쿼리에 대해 엄청난 양의 데이터가 반환(Return) 되는 결과를 초래해서, 데이터베이스 성능을 말 그대로 기어 다니게 만들 수 있다. 혹은, 더 나가서, 쿼리 최적화기(Optimizer)가 포기해서 아무것도 반환되지 않을 수도 있다.
복합 뷰를 풀어내는 것으로 쿼리 응답 시간을 몇 분에서 몇 초로 줄일 수 있다.
출처 : https://wikidocs.net/4178
http://sjs0270.tistory.com/54
http://www.itworld.co.kr/tags/2665/SQL/105792