oracle

View생성

일하기 싫은 직장인 2020. 5. 11. 18:39

만약 아래와 같은 쿼리가 있다고 가정해보자.

select a.student_no 
      , b.평균  
  from ted_Score a  
    , (select  student_no 
             ,  round(nvl(kor,0) + nvl(math,0) + nvl(eng,0)) as 평균  
          from ted_score 
         where year_mon = '2017/07') b 
 where a.year_mon = '2017/07' 
   and a.student_no = b.student_no 
         ;

업무상 위의 쿼리의 결과를 자주 반복 조회해야한다면, 9줄이 되는 쿼리를 항상 작성하는 것이 번거롭다.

이때, 위의 쿼리 전체를 임의의 이름 'test'로 지정해버리고

select *

  from test; 

이렇게 했을때 위의 쿼리와 동일한 결과가 나오게 하는 법이 있는데, 바로 그것이 View이다. 작성법은 아래와 같다. 

 

-----------------------------------------------------------------------------------------------------------------------------------

create or replace View test as      -- View생성법:  create or replace View 원하는이름지정 as 쿼리작성;
select a.student_no 
      , b.평균  
  from ted_Score a  
    , (select  student_no 
             ,  round(nvl(kor,0) + nvl(math,0) + nvl(eng,0)) as 평균  
          from ted_score 
         where year_mon = '2017/07') b 
          
 where a.year_mon = '2017/07' 
   and a.student_no = b.student_no 
         ;

-----------------------------------------------------------------------------------------------------------------------------------

 

이제, test라는 뷰가 생성되었다. 따라서 이제

select *

   from test;

를 해주면, 항상 9줄의 코딩을 작성할 필요없이 같은 결과를 얻을 수 있다. 그리고, View는 프로그램 종료해도 자동 commit되어 있으니 삭제되지 않는다.

만약 생성한 뷰를 삭제하고 싶으면 drop view 뷰이름 ; 해주면 삭제된다. 

View의 간략한 사용법은 이러하고 조금 더 구체적으로 정리해보면 아래와 같다.

 

 

 

--뷰(View)란 무엇인가?
/*뷰(View)는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체이다. 
실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있습니다. 
또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있습니다. */

--뷰(View)의 사용 목적
/*코딩을 하다보면 여러개의 테이블에서 필요한 정보를 뽑아 사용할때가 많습니다. 
이때 좀 더 편리하게 사용할 수 있는 방법중의 하나가 바로 뷰이다. 뷰를 사용하면 복잡한 질의를 쉽게 만들어 준다. 
여러테이블의 JOIN과 GROUP BY 같은 같은 복잡한 쿼리를 view로 저장시켜놓으면 다음부터는
 저장한 view의 정보만 가져오면 되므로 쉽게 좀 더 편리하게 사용할 수 있습니다. 일종의 함수라고도 생각하셔도 됩니다. 
 또한 뷰는 데이터 보안에서도 유리한데요. 뷰를 보면 컬럼과 데이터만 공개되므로 원천 테이블은 알 수 없다. */