[SQL] 096. 복잡한 쿼리를 단순하게 하기2

Updated:

초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.

오라클 SQL을 기반으로 합니다.

실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.


[기본 옵션]

-- AUTOCOMMIT 끄기
SET AUTOCOMMIT OFF;

-- 날짜 출력 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD';

[예시]

이번 챕터에선 복합 VIEW를 생성해보자.

복합 VIEW는 함수나 집계 함수 등을 포함한다.

여기선 부서번호별 평균월급을 가지는 복합 VIEW를 생성한다.

-- 복합 VIEW
CREATE VIEW EMP_VIEW2 AS
    SELECT DEPTNO, ROUND(AVG(SAL)) AS 평균월급
    FROM EMP
    GROUP BY DEPTNO;

이렇게 VIEW를 생성시 장점은 쿼리를 좀 더 단순하게 작성 할 수 있다.

다음 예시는 동일한 결과를 출력하는 서브 쿼리와 VIEW를 이용한 쿼리문이다.

서브 쿼리에 비해 VIEW를 사용한 쿼리가 훨씬 단순하다.

-- 서브 쿼리 이용
SELECT K1.ENAME, K1.DEPTNO, K1.SAL, K2.평균월급
FROM EMP K1, (SELECT DEPTNO, ROUND(AVG(SAL)) AS 평균월급
              FROM EMP
              GROUP BY DEPTNO;) K2
WHERE K1.DEPTNO = K2.DEPTNO AND K1.SAL > K2.평균월급;

-- VIEW 이용
SELECT K1.ENAME, K1.DEPTNO, K1.SAL, K2.평균월급
FROM EMP K1, EMP_VIEW2 K2
WHERE K1.DEPTNO = K2.DEPTNO AND K1.SAL > K2.평균월급;

어처피 VIEW 생성으로 똑같이 작성하는데 쿼리 단순화 장점이라면,

아마 실전에선 자주 사용하는 쿼리를 VIEW로 사용하지 않을까 싶다.

속도의 장점이 있다고 알고 있었는데 SQL로는 처리가 오래 걸린 대용량 데이터를 다룬 경험이 없다.

Tags:

Categories:

Updated:

Leave a comment