14 뷰(View) 뷰의 개념 뷰 관리
뷰의 개념 뷰(view)란? 뷰의 장점 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블 가상 테이블 테이블은 디스크에 공간이 할당되어 데이터를 저장 뷰는 데이터딕셔너리 테이블에 뷰에 대한 정의만 저장 디스크 저장공간 할당이 안됨 전체의 데이터중에서 일부만 접근할 수 있도록 제한 테이블에서 파생된 객체 테이블과 유사하게 사용 뷰에 대한 수정 결과는 뷰를 정의한 기본 테이블에 적용 뷰를 정의한 기본 테이블에서 정의된 무결성 제약 조건 상속 뷰의 장점 데이터를 보호하기 위한 보안(security) 교수 테이블에서 급여나 보직수당은 개인적인 정보임 학생들의 접근을 제한 사용자 편의성(flexibility) 사용자 편의성 - 학생 입장에서는 교수 테이블에서 급여와 보직수당을 제외한 정보를 뷰로 만들어서 학생들에게 제공 14장. 뷰(View)
뷰의 개념도 교수 테이블을 이용한 뷰 생성 CREATE TABLE VIEW_PROFESSOR AS 102 25 86/01/08 450 교수 refresh 권혁일 9905 ……… 20 COMM 88/09/13 95/04/12 82/06/24 HIREDATE 420 320 500 SAL 101 201 DEPTNO 조교수 sweat413 이재우 9902 부교수 Pocari 이만식 9906 capool 김도훈 9901 POSITION USERID NAME PROFNO 교수 테이블 교수 테이블을 이용한 뷰 생성 CREATE TABLE VIEW_PROFESSOR AS SELECT profno, name, userid, position, hiredate, deptno FROM professor; 뷰(view_professor) 결과 14장. 뷰(View)
뷰의 종류 단순 뷰(simple view) 복합 뷰(complex view) 하나의 기본 테이블에 의해 정의한 뷰 단순 뷰에 DML명령문의 실행 결과 기본 테이블에 반영 복합 뷰(complex view) 두개 이상의 기본 테이블로 구성한 뷰 무결성 제약조건, 표현식, GROUP BY절의 유무에 따라 DML명령문의 제한적 사용 DISTINCT, 그룹함수, GROUP BY, START WITH CONNECT BY, ROWNUM을 포함 할 수 없음 14장. 뷰(View)
뷰 생성 뷰 생성 CREATE VIEW 명령문 사용 뷰 생성시 칼럼 이름을 명시 하지 않으면 기본 테이블의 칼럼 이름을 상속 함수나 표현식에 의해 정의된 칼럼은 별도로 이름을 명시(별명 사용) 14장. 뷰(View)
뷰 생성 예 – 단순 뷰 14장. 뷰(View)
뷰 생성 예 – 복합 뷰 14장. 뷰(View)
뷰 생성 예 – 함수를 사용 14장. 뷰(View)
인라인 뷰 인라인 뷰(inline view) FROM 절에서 참조하는 테이블의 크기가 클 경우, 필요한 행과 컬럼만으로 구성된 집합을 재정의하여 질의문을 효율적 구성 FROM 절에서 서브쿼리를 사용하여 생성한 임시 뷰 SQL 명령문이 실행되는 동안만 임시적으로 정의 14장. 뷰(View)
인라인 뷰 예 14장. 뷰(View)
뷰의 내부 처리 과정 뷰에 대한 질의의 내부적인 처리 과정 1) USER_VIEW 데이터 딕셔너리에서 뷰에 대한 정의를 조회 2) 기본 테이블에 대한 뷰의 접근 권한을 확인 3) 뷰에 대한 질의를 기본 테이블에 대한 질의로 변환 4) 기본 테이블에 대한 질의를 통해 데이터를 검색 5) 검색된 결과를 출력 뷰의 정의 CREATE VIEW v_stud_dept101 AS SELECT studno, name, deptno FROM student WHERE deptno = 101 SELECT * FROM v_stud_dept101 WHERE name = ‘김영균’ 사용자 질의 내부 변환 14장. 뷰(View)
뷰 조회 USER_VIEWS 사용자가 생성한 모든 뷰에 대한 정의를 저장 14장. 뷰(View)
뷰의 변경 뷰의 변경 뷰의 변경은 기존 뷰에 대한 정의를 삭제한 후 재생성 CREATE 명령문에서 OR REPLACE 옵션을 이용하여 재생성 OR REPLACE 옵션은 기존에 생성된 뷰가 있을 경우에는 기존 뷰를 무시하고 재생성하는 옵션 변경 결과는 USER_VIEWS 데이터 딕셔너리에 저장 14장. 뷰(View)
뷰에 대한 데이터 조작 단순 뷰 복합 뷰 데이터 조작이 불가능한 경우 세가지 단순 뷰는 기본 테이블과 동일하게 DML 명령문 사용 내부적으로 기본 테이블에 대한 데이터를 조작하는 과정 뷰에 대한 무결성 제약조건도 기본 테이블에 정의된 무결성 제약조건이 적용 복합 뷰 복합 뷰에서는 DML 명령어 사용 제한 데이터 조작이 불가능한 경우 세가지 뷰 정의에 포함되지 않는 기본 테이블의 칼럼이 NOT NULL 제약조건으로 지정된 경우 뷰 정의시 표현식으로 정의된 칼럼에 대해서는 UPDATE, INSERT 명령문의 실행이 불가능 뷰 정의시 그룹 함수, DISTINCT, GROUP BY 절을 포함한 경우에는 모든 종류의 DML 명령문 사용 불가 14장. 뷰(View)
뷰의 삭제 뷰의 삭제 뷰는 실체가 없는 가상 테이블이므로 뷰의 삭제는 USER_VIEWS데이터 딕셔너리에 저장된 뷰의 정의를 삭제 뷰를 정의한 기본 테이블의 구조나 데이터에는 전혀 영향 없음 14장. 뷰(View)