* 이 글은 제가 공부하기 위해 최대한 사실에 입각해 내용을 적으려고 하지만 일부 내용들이 정확하지 않을 수 있습니다.
혹시나 잘못된 부분이 있으면 너그럽게 이해해 주시고 피드백 부탁드려요!
1. 뷰의 개념
뷰의 개념
• 뷰(view)란?
– 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블
– 가상 테이블
• 테이블은 디스크에 공간이 할당되어 데이터를 저장
• 뷰는 데이터딕셔너리 테이블에 뷰에 대한 정의만 저장
• 디스크 저장공간 할당이 안됨
– 전체의 데이터중에서 일부만 접근할 수 있도록 제한
– 테이블에서 파생된 객체 테이블과 유사하게 사용
– 뷰에 대한 수정 결과는 뷰를 정의한 기본 테이블에 적용
– 뷰를 정의한 기본 테이블에서 정의된 무결성 제약 조건 상속
• 뷰의 장점
– 데이터를 보호하기 위한 보안(security)
• 교수 테이블에서 급여나 보직수당은 개인적인 정보이므로 학생들의 접근을 제한
– 사용자 편의성(flexibility)
• 사용자 편의성 - 학생 입장에서는 교수 테이블에서 급여와 보직수당을 제외한 정보를 뷰로 만들어서 학생들에게 제공
뷰의 개념도
뷰의 종류
• 단순 뷰(simple view)
– 하나의 기본 테이블에 의해 정의한 뷰
– 단순 뷰에 DML명령문의 실행 결과 기본 테이블에 반영
• 복합 뷰(complex view)
– 두 개 이상의 기본 테이블로 구성한 뷰
– 무결성 제약조건, 표현식, GROUP BY절의 유무에 따라 DML명령문의 제한적 사용
– DISTINCT, 그룹함수, GROUP BY, START WITH CONNECT BY, ROWNUM을 포함할 수 없음
2. 뷰의 관리
뷰 생성
• 뷰 생성
– CREATE VIEW 명령문 사용
– 뷰 생성 시 칼럼 이름을 명시하지 않으면 기본 테이블의 칼럼 이름을 상속
– 함수나 표현식에 의해 정의된 칼럼은 별도로 이름을 명시(별명 사용)
☞ 사 용 법
• OR REPLACE : 기존 뷰와 동일한 이름으로 뷰를 재생성하는 경우
• FORCE : 기본 테이블의 존재 여부에 상관없이 뷰 생성
• NOFORCE : 기본 테이블이 존재할 경우에만 뷰 생성, 기본 값
• ALIAS : 기본 테이블의 칼럼 이름과 다르게 지정한 뷰의 칼럼 이름
뷰 생성 예 – 단순 뷰
• 사용 예
– 학생 테이블에서 101번 학과 학생들의 학번, 이름, 학과 번호로 정의되는 단순 뷰를 생성하여라.
뷰 생성 예 – 복합 뷰
• 사용 예
– 학생 테이블과 부서 테이블을 조인하여 102번 학과 학생들의 학번, 이름, 학년, 학과 이름으로 정의되는 복합 뷰를
생성하여라.
뷰 생성 예 – 함수를 사용
• 사용 예
– 교수 테이블에서 학과별 평균 급여와 총계로 정의되는 뷰를 생성하여라
인라인 뷰(inline view)
• 인라인 뷰(inline view)
– FROM 절에서 참조하는 테이블의 크기가 클 경우, 필요한 행과 칼럼만으로 구성된 집합을 재정의하여 질의문을
효율적 구성
– FROM 절에서 서브쿼리를 사용하여 생성한 임시 뷰
– SQL 명령문이 실행되는 동안만 임시적으로 정의
☞ FROM 절에서 서브쿼리 사용
• 사용 예
– 인라인 뷰를 사용하여 학과별로 학생들의 평균 키와 평균 몸무게, 학과 이름을 출력하여라
뷰의 내부 처리 과정
• 뷰에 대한 질의의 내부적인 처리 과정
1) USER_VIEW 데이터 딕셔너리에서 뷰에 대한 정의를 조회
2) 기본 테이블에 대한 뷰의 접근 권한을 확인
3) 뷰에 대한 질의를 기본 테이블에 대한 질의로 변환
4) 기본 테이블에 대한 질의를 통해 데이터를 검색
5) 검색된 결과를 출력
뷰 조회
• USER_VIEWS
– 사용자가 생성한 모든 뷰에 대한 정의를 저장
뷰의 변경
• 뷰의 변경
– 뷰의 변경은 기존 뷰에 대한 정의를 삭제한 후 재생성
– CREATE 명령문에서 OR REPLACE 옵션을 이용하여 재생성
• OR REPLACE 옵션은 기존에 생성된 뷰가 있을 경우에는 기존 뷰를 무시하고 재생성하는 옵션
– 변경 결과는 USER_VIEWS 데이터 딕셔너리에 저장
☞ 사 용 예
기존 V_STUD_DEPT101 뷰에 학년 칼럼을 추가하여 재정의하여라
뷰에 대한 데이터 조작
• 단순 뷰
– 단순 뷰는 기본 테이블과 동일하게 DML 명령문 사용
– 내부적으로 기본 테이블에 대한 데이터를 조작하는 과정
– 뷰에 대한 무결성 제약조건도 기본 테이블에 정의된 무결성 제약조건이 적용
• 복합 뷰
– 복합 뷰에서는 DML 명령어 사용 제한
• 데이터 조작이 불가능한 경우 세 가지
1) 뷰 정의에 포함되지 않는 기본 테이블의 칼럼이 NOT NULL 제약조건으로 지정된 경우
2) 뷰 정의 시 표현식으로 정의된 칼럼에 대해서는 UPDATE, INSERT 명령문의 실행이 불가능
3) 뷰 정의 시 그룹 함수, DISTINCT, GROUP BY 절을 포함한 경우에는 모든 종류의 DML 명령문 사용 불가
뷰의 삭제
• 뷰의 삭제
– 뷰는 실체가 없는 가상 테이블이므로 뷰의 삭제는 USER_VIEWS 데이터 딕셔너리에 저장된 뷰의 정의를 삭제
– 뷰를 정의한 기본 테이블의 구조나 데이터에는 전혀 영향 없음
☞ 사용법
☞ 사용예
학생 테이블과 연관된 모든 뷰를 삭제하여라
'SQL > 데이터베이스' 카테고리의 다른 글
[풀스택과정] 데이터베이스 14. 사용자 권한 제어 (0) | 2023.02.26 |
---|---|
[풀스택과정] 데이터베이스 15. 계층적 질의문 (0) | 2023.02.09 |
[풀스택과정] 데이터베이스 12. 인덱스 관리 (0) | 2023.02.09 |
[풀스택과정] 데이터베이스 11. 데이터 무결성 (0) | 2023.02.09 |
[풀스택과정] 데이터베이스 10. 테이블 관리 (0) | 2023.02.08 |