2014년 7월 22일 화요일

뷰(View)란?[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]

A. 정의 
- View는 하나 이상의 Table또는 다른 View에 포함된 데이터를 원하는대로 나타낸 것 
- View는 내장질의또는 가상 Table등으로 표현할수 있다. 
- View는 Table에서 파생되므로 둘사이에는 많은 유사성이 있다. 예를들어 Table과 같이 최대 
254개의 Column이 있는 View를 정의할수 있고 뷰를 질의하고 몇가지 제한 사항을 사용하여 뷰를 
갱신,삽입,삭제를 할수있다.  뷰에대해 수행되는 모든 작업은 뷰의 기본 Table에 있는 Data에 
실제 영향을 주며 기본 Table의 무결성 제약조건과 트리거를 따른다. 
- 뷰에는 저장영역이 할당되지 않으며 실제로 Data를 포함하지도 않는다. 
B. 처리방법 
- Oracle은 View를 정의하는 질의 Text를 Data Dictionary(user_views)에 저장한다, 
- Oracle은 기존공유 SQL영역에 동일한 멸령이 들어있지 않을때만 새로운 공유 SQL영역에 뷰를 
참조하는 명령문을 Parsing합니다. 따라서 뷰를 사용시 공유 SQL영역과 관련하여 메모리 사용이 
감소하는 이익이 있다. 
- Oracle은 원래 질의를 뷰정의 질의와 병합할 때 원래 뷰를 변형하여 뷰에 대한 질의에 인덱스를 
사용할지를 결정한다. 

Create view emp_view as 
    Select emp_no, ename, sal, loc 
    From emp 
    Where emp.deptno = dept.deptno 
    And dept.deptno = 10; 

<사용자 Query> 
select ename from emp_view 
where empno = 9876; 


select ename 
from emp, dept 
where emp.deptno = dept.deptno 
and  dept.deptno = 10 
and  emp.empno = 9876; 

Oracle은 가능한 모든 경우에 뷰에대한 질의를 뷰정의 질의 및 기본뷰 질의와 병합한다. 또한 뷰를 
참조하지않고 질의를 발생하는 것 처럼 병합된 질의를 최적화한다. 
따라서 Column이 뷰 정의 또는 뷰에대한 사용자정의에서 참조되는지의 여부에 관계없이 모든 참조된 
기본 Table의 Column에 대한 Index를 사용한다. 
만약 뷰에대한 정의와 사용자 질의를 병합할수 없다면 Index를 사용하지 않을수 있다. 

C. 갱신가능한 Join View 
- Join View란 From절에 하나이상의 Table또는 View를 가지며, Distinct, group by, start with, 
connect by, rownum, union all, intersect, for update등의 절에서는 사용하지 않는다. 

- 갱신가능한 Join View는 둘이상의 기본 Table 및 View를 포함하며 Update/Insert/Delete등의 
작업이 가능하다. 

- Dictionary View인 all_updatable_columns,윰_updatable_columns, user_updatable_colums 
에는 갱신가능한 View의 Column을 나타낸다. 

- Join View에 대한 Insert/Update/Delete등의 작업은 한번에 하나의 기본 Table에서만 가능하며, 
With Check Option을 사용하여 View를 정의하는 경우에는 반복된 Table의 모든 Join Column과 모 
든 Column은 갱신할수 없으며, Insert명령문은 허용되지 않는다.또한 with Check Option을 
사용하여 뷰를 정의하고 키예약 Table이 반복되는 경우에는 뷰에서 행을 삭제할수 없다. 

D. View생성 
 - Create View명령을 사용한다. 
예] create view sales_staff as 
      select empno, ename, deptno 
      from emp 
      where deptno =10 
      with check option constraint sales_staff_cnst; 

    위에서 check option은 뷰가 선택할수 없는 행에 대해서는 Insert와 Update명령문이 
    실행되지 않는다는 제약 조건을 갖는다. 
    만약 위의 View에 deptno가 30인 행을 Insert하려고 하면 RollBack되고 오류가 발 
    생한다. 
E. View수정하기 
위에서 만든 staff View를 재정의 하는경우 
create or replace view sales_staff_view as 
      select empno, ename, deptno 
      from emp 
      where deptno =30 
      with check option constraint sales_staff_cnst; 
F. View의 삭제 
 - drop view sales_staff_view; 


오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 
www.oraclejavacommunity.com


평일주간(9:30~18:10) 개강
(7/28)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/28)[기업100%환급]안드로이드개발자과정
(8/04)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 
(8/04)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(8/08)[기업100%환급]SQL기초에서 Schema Object까지
(8/08)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(8/11)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정

평일야간(19:00~21:50) 개강
(7/24)SQL기초에서실무까지
(7/29)안드로이드개발자과정
(7/29)Spring3.X, MyBatis, Hibernate실무과정
(8/04)웹퍼블리싱 마스터
(8/05)JSP,Ajax,jQUERY,Spring,MyBatis,Hibernate속성과정
(8/08)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(8/28)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지

주말(10:00~17:50) 개강
(7/26)Spring3.X, MyBatis, Hibernate실무과정
(7/26)개발자를위한PLSQL,SQL튜닝,힌트
(8/02)C#,ASP.NET마스터
(8/02)웹퍼블리싱 마스터
(8/02)SQL초보에서 Schema Object까지
(8/09)안드로이드개발자과정
(8/09)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(8/23)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)

주말저녁(18:30~22:20) 개강
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지

댓글 없음:

댓글 쓰기