본문 바로가기

Oracle

Oracle - View 객체

다음과 같은 TABLE이 있다.

NAME              SAL
---------- ----------
A                 100
B                 200
C                 300
D                 400

 

여기서 B의 급여보다 많은 사람을 출력하려면 아래와 같이 서브쿼리를 이용하면 된다.

SELECT * 
FROM TAB01
WHERE SAL > (SELECT SAL
                FROM TAB01
                WHERE NAME='B');

 

 

위 예시에서는 3줄로 끝났지만, 만약 서브쿼리가 50줄 이상이라면?

가독성은 현저히 떨어질 것이다.

이런 경우에 VIEW라는 가상의 테이블을 만들어 불러오도록 하는 역할을 할 수 있다.

 

다음과 같이 VIEW를 생성한다.

-- VIEW 삭제
DROP VIEW VIEW01;
-- VIEW 만들기
CREATE VIEW VIEW01
    AS (SELECT SAL
        FROM TAB01
        WHERE NAME='B');

내가 생성한 모든 VIEW를 확인하려면 아래와 같이 하며,

보통 TABLE 보듯이 SELECT문을 만든다.

--내가 생성한 전체 VIEWS 목록
SELECT *
FROM USER_VIEWS;

-- 생성한 VIEW는 아래와 같이 TABLE를 불러오는 것처럼 사용한다.
SELECT *
FORM VIEW01;

 

활용 시에는 서브쿼리와 같은 방법으로 쓰면 된다.

보기엔 서브쿼리랑 별 차이가 없다고 생각이 들지 모르지만,

VIEW01의 길이가 100줄이라면 그 효용성은 말하지 않아도 알 것 같다.

SELECT * 
FROM TAB01
WHERE SAL > (SELECT 
             * FROM
             VIEW01);