비교 조건식
비교 조건식은 논리 연산자나 ANY, SOME, ALL 키워드로 비교하는 조건식을 말한다. 여기서는 ANY, SOME, ALL 비교에 대해서 알아 볼텐데 먼저 ANY를 살펴 보자.
입력
SELECT employee_id, salary
FROM employees
WHERE salary = ANY (2000, 3000, 4000)
ORDER BY employee_id;
결과
EMPLOYEE_ID SALARY
------------ ---------
187 3000
192 4000
197 3000
이 쿼리는 급여가 2000이거나 3000, 4000인 사원을 추출하는 것이다. ANY가 ‘아무것’이나 ‘하나’란 뜻이 있으므로 위 문장은 세 가지 값, 즉 급여가 2000이나 3000이나 4000 중 하나라도 일치하는 모든 사원을 추출한 것이다. 따라서 ANY는 OR 조건으로 변환이 가능하며 다음 문장도 같은 결과를 반환한다.
입력
SELECT employee_id, salary
FROM employees
WHERE salary = 2000
OR salary = 3000
OR salary = 4000
ORDER BY employee_id;
결과
EMPLOYEE_ID SALARY
----------- ---------
187 3000
192 4000
197 3000
반면 ALL은 모든 조건을 동시에 만족해야 한다. 다음 쿼리를 보자.
입력
SELECT employee_id, salary
FROM employees
WHERE salary = ALL (2000, 3000, 4000)
ORDER BY employee_id;
결과
선택된 행 없음
이 문장은 급여가 2000, 3000, 4000 모두에 해당되는 사원을 조회하므로 조회되는 데이터가 없다. 한 사원의 급여는 한 가지 값만 가지고 있으므로 논리적으로 봐도 잘못된 쿼리다. ANY와는 반대로 ALL 조건식은 AND 조건으로 변환할 수 있다.
마지막으로 알아 볼 SOME은 ANY와 동일하게 사용되며 동작한다.
입력
SELECT employee_id, salary
FROM employees
WHERE salary = SOME (2000, 3000, 4000)
ORDER BY employee_id;
결과
EMPLOYEE_ID SALARY
------------ ---------
187 3000
192 4000
197 3000