0
 45   5   1
  View Articles

Name  
   손병목  (2002-04-14 23:16:17, Hit : 17958, Vote : 1518)
Homepage  
   http://www.itmembers.net
Subject  
   오라클 데이터 검색 - SUBSELECT(2) 비교 연산자, ANY, ALL
지난 시간에는 IN 연산자를 사용하여 SUBSELECT 문의 용법을 알아 보았습니다.
이번 시간에는 SUBSELECT 문의 결과 세트를 비교 연산자를 이용해 재검색하는 방법을 알아 보겠습니다.
특히 비교 연산자를 ANY 또는 ALL 과 함께 사용했을 때 어떠한 결과가 나타나는지 주의깊게 보시기 바랍니다.

  1. 비교 연산자

    아래는 일반적인 비교 연산자를 사용하는 예입니다.
    전 시간의 내용을 이해하셨다면 별 어려움 없이 이해하실 수 있을 겁니다.

    SELECT DEPT_NO, MONTH, AMOUNT
    FROM DEPT_SALES
    WHERE AMOUNT >
            ( SELECT AVG(AMOUNT)
            FROM DEPT_SALES );


    DEPT_SALES 테이블의 AMOUNT의 평균보다 큰 AMOUNT 값을 가진 레코드의 DEPT_NO, MONTH, AMOUNT를 표시하라는 뜻입니다.
    DEPT_SALES 테이블의 AMOUNT 평균값이 275이니까 275보다 큰 AMOUNT 값을 가진 레코드만 표시되겠네요.

  2. 비교 연산자와 ANY

    SUBSELECT의 결과 세트 목록 중에서 최소한 하나라도 만족하는 것을 의미합니다.
    경우에 따라서 최소값이 될 수도, 최대값이 될 수도 있습니다.
    다음의 용례를 잘 살펴 보세요. 비교 연산자와 ANY가 함께 사용될 때 ANY가 최소값일 수도 최대값일 수도 있습니다.
    ANY가 '어떠한'이라는 뜻이니까, 최소한 하나의 조건은 만족해야 합니다.
    어떠한 값보다 크다는 것이 하나라도 만족하려면 '어떠한'이 '최소값'이 되어야겠죠.
    반면 어떠한 값보다 작다는 것이 하나라도 만족하려면 '어떠한'이 '최대값'이 되어야 합니다.

    • > ANY : 최소값 보다 크면
    • >= ANY : 최소값보다 크거나 같으면
    • < ANY : 최대값보다 작으면
    • <= ANY : 최대값보다 작거나 같으면
    • = ANY : IN과 같은 효과
    • != ANY : NOT IN과 같은 효과


  3. 비교 연산자와 ALL

    ANY와는 반대되는 개념입니다.

    • > ALL : 최대값 보다 크면
    • >= ALL : 최대값보다 크거나 같으면
    • < ALL : 최소값보다 작으면
    • <= ALL : 최소값보다 작거나 같으면
    • = ALL : SUBSELECT의 결과가 1건이면 상관없지만 여러 건이면 오류가 발생합니다.
    • != ALL : 위와 마찬가지로 SUBSELECT의 결과가 여러 건이면 오류가 발생합니다.


그럼 다음의 예제를 직접 실행해 보고 그 결과를 확인해 보세요.

SELECT EMP_NUM, LAST_NAME, FIRST_NAME, JOB_CODE
FROM EMP
WHERE EMP_NUM > ANY
        ( SELECT EMP_NUM
        FROM EMP_SKILL
        WHERE AVAILABLE = 'YES');



SELECT EMP_NUM, LAST_NAME, FIRST_NAME, JOB_CODE
FROM EMP
WHERE EMP_NUM > ALL
        ( SELECT EMP_NUM
        FROM EMP_SKILL
        WHERE AVAILABLE = 'YES');



이상 동주 아빠 손병목이었습니다.

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

손병목
Next
   오라클 데이터 검색 - SUBSELECT(1) IN

손병목


Copyright 1999-2021 Zeroboard / skin by Zetyx