뷰의 동작 원리
사용자가 뷰에 대해서 질의를 하면 use_views에서 뷰에 대한 정의를 조회한다.
연결된 테이블에 대한 뷰의 접근 권한을 확인한다.
뷰에 대한 질의를 테이블 질의로 변환한다.
테이블에 대한 질의를 통해 데이터를 검색한다.
검색된 결과를 출력한다.
뷰와 관련된 데이터 딕셔너리
데이터 딕셔너리 user_views 에 사용자가 생성한 모든 뷰에 대한 정의가 저장되어 있다.
SQL> desc user_views
이름 널? 유형
------------------ -------- -----------------------
VIEW_NAME(뷰 이름) NOT NULL VARCHAR2(30)
TEXT_LENGTH(뷰의 문자열 길이) NUMBER
TEXT (뷰의 내용-> 텍스트) LONG
TYPE_TEXT_LENGTH NUMBER
TYPE_TEXT VARCHAR2(4000)
OID_TEXT_LENGTH NUMBER
OID_TEXT VARCHAR2(4000)
VIEW_TYPE_OWNER VARCHAR2(30)
VIEW_TYPE VARCHAR2(30)
SUPERVIEW_NAME VARCHAR2(30)
EDITIONING_VIEW VARCHAR2(1)
READ_ONLY (읽기 전용 확인) VARCHAR2(1)
SQL> select view_name,text_length,text from user_views;
VIEW_NAME TEXT_LENGTH TEXT
--------------- ----------- ----------------------------------------
V_EMP 49 select empno,ename,job from b_emp
where deptno=20
SQL> create view v_search as select view_name,text_length,text from user_views
SQL> select * from v_search;
VIEW_NAME TEXT_LENGTH TEXT
--------------- ----------- ----------------------------------------
V_EMP 49 select empno,ename,job from b_emp
where deptno=20
V_SEARCH 49 select view_name,text_length,text from
user_views
뷰와 연결되어 있는 테이블의 구조에 문제가 발생-> 뷰 실행 불가
//필드를 삭제하는 것이 아님,존재는 하지만 사용 불가
SQL> alter table b_emp set unused column ename;
//ename 필드를 더 이상 볼 수 없다,복구 불가
SQL> desc b_emp;
//뷰와 연결되어 있는 테이블의 구조에 문제가 발생하여
//이를 실행시키는 뷰가 제대로 작동하지 않는다는 에러가 발생한다
//-> 복구 불가,이 뷰는 삭제해야한다.
SQL> select * from v_emp;
계정에서 작업한 결과물 확인(테이블, 뷰, 시노님)
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS TABLE
...
SALGRADE TABLE
V_EMP20 VIEW
인라인 뷰
sql문장에서 사용하는 서브쿼리의 일종으로 보통 from절에 위치해서 테이블처럼 사용한다.
ex) 사원 중 입사일이 가장 빠른 5명을 얻어 오는 질의문 작성(rownum 칼럼 이용)
( rownum: 화면에 출력할때 레코드 앞에 번호를 부여 )
SQL> select rownum,empno,hiredate
from (select empno,hiredate from emp order by hiredate)
where rownum<=5;
'DB(ORACLE)' 카테고리의 다른 글
[Oracle]col명령어, 파라미터 인수질의, 변환함수 (0) | 2021.05.26 |
---|---|
[Oracle]db모델링 툴 - exerd 30일 평가판 사용하기 (0) | 2021.03.19 |
[Oracle]오라클 뷰 제약조건, 단순뷰/복합뷰 (0) | 2020.12.27 |
[Oracle]오라클 뷰(view)개념, 뷰 생성/수정/삭제 (0) | 2020.12.24 |
[Oracle]오라클 백업테이블생성, 테이블 복사, 스키마 복사 (0) | 2020.12.23 |