다음과 같은 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);
'Oracle' 카테고리의 다른 글
Oracle 테이블의 Column 추가·수정·삭제·이름 변경 (0) | 2020.06.04 |
---|---|
Oracle - 누적 합계를 해주는 SUM OVER (0) | 2020.06.04 |
Oracle - 중복된 데이터가 2개 이상일 경우 (0) | 2020.06.04 |
Oracle - DML(데이터 조작: 추가·수정·삭제) (0) | 2020.06.03 |
Oracle - SubQuery (0) | 2020.06.03 |