오라클 데이터 검색 – SUBSELECT(3) EXIST 外

SUBSELECT 마지막 시간입니다.
SUBSELECT의 결과 값이 하나라도 있으면 실행되는 EXIST에 관한 용례를 살펴보고,
SUBSELECT문을 FROM 절과 HAVING 절에서 사용할 때의 특징에 대해서도 알아보겠습니다.

  1. EXIST

    WHERE 절에서 EXIST를 사용하면,
    SUBSELECT 문의 결과가 True이면 SELECT 문을 수행하고 그렇지 않으면 수행하지 않습니다.

    SELECT EMP_NUM, LAST_NAME, FIRST_NAME, JOB_CODE
    FROM EMP
    WHERE EXISTS
            ( SELECT *
            FROM EMP_SKILL
            WHERE AVAILABLE = ‘YES’);

    EMP_SKILL 테이블에서 AVAILABLE의 값이 ‘YES’인 레코드가 존재하면, EMP 테이블의 EMP_NUM, LAST_NAME, FIRST_NAME, JOB_CODE를 표시하라는 뜻입니다.

  2. FROM 절에서 SUBSELECT 사용하기

    SUBSELECT 문은 WHERE 절 뿐만 아니라  FROM 절에서도 사용할 수 있습니다.
    WHERE 절에서 사용하는 것과 결과는 동일하지만
    TABLE에 데이터가 많을 때 사용하면 효과적입니다.
    그 이유는, FROM 절에서 SUBSELECT는 VIEW와 같은 역할을 하기 때문입니다.(VIEW에 대해서는 몇 강좌 후에 다룰 예정입니다.)

    SELECT EMP_NUM, SKILL_NAME
    FROM ( SELECT EMP_NUM, SKILL_NAME, AVAILABLE
            FROM SKILL A, EMP_SKILL B
            WHERE A.SKILL_NO = B.SKILL_NO)

    WHERE AVAILABLE = ‘YES’;

  3. HAVING 절에서 SUBSELECT 사용하기

    앞서 배운 적이 있지요? HAVING 절은 GROUP을 만드는 조건을 지정할 때 사용합니다.(제28강 오라클 데이터 검색 – ORDER BY, GROUP BY를 보세요.)
    사용법은 WHERE 절에서 사용할 때와 같습니다.

    SELECT DEPT_NO, AVG(AMOUNT)
    FROM DEPT_SALES
    WHERE AMOUNT > 100
    GROUP BY DEPT_NO
    HAVING AVG(AMOUNT) >
            ( SELECT AVG(AMOUNT)
            FROM DEPT_SALES);

일요일이 몇 시간 남지 않았네요.
이상 동주 아빠 손병목이었습니다.

위로 스크롤