1. IN
- 조건절에서 사용하며 다수의 비교값과 비교하여 비교값 중 하나라도 같은 값이 있다면 true 이다.
- SELECT
*
FROM
emp
WHERE
sal
IN
(950, 3000, 1250);
- 'sal = 950 OR sal = 3000 OR sal = 1250'
- 950, 3000, 1250 과 동일한 값은 모두 출력한다.
2. ANY
- 다수의 비교값 중 한개라도 만족하면 true 이다.
- IN 과 다른점은 비교 연산자를 사용한다는 점이다.
1 | SELECT * FROM emp WHERE sal = ANY (950, 3000, 1250) |
- 이 문장은 위의 IN의 결과와 같다. "=" 연산자는 비교 값과 같은 값은 모두 출력하게 된다.
- 'sal = 950 OR sal = 3000 OR sal = 1250' 와 동일하다.
1 | SELECT * FROM emp WHERE sal > ANY (950, 3000, 1250)
|
- 이 문장은 ">"연산자를 사용했다. 이 쿼리의 결과는 950보다 큰 값은 모두 출력하게 된다.
- 'sal > 950 OR sal > 3000 OR sal > 1250' 와 동일하다.
1 | SELECT * FROM emp WHERE sal < ANY (950, 3000, 1250) |
- 이 문장은 "<" 연산자를 사용했다. 이 쿼리의 결과는 3000보다 작은 값은 모두 출력하게 된다.
- 'sal < 950 OR sal < 3000 OR sal < 1250' 와 동일하다.
결국 ANY는 나올 수 있는 모든 조건에 OR 연산을 수행한것과 동일한 결과를 얻는다.
3. ALL
- 전체 값을 비교하여 모두 만족해야만 true 이다.
1 | SELECT * FROM emp WHERE sal = ALL (950, 3000, 1250) |
- 결과가 하나도 없다. 하나의 값이 모든 값과 일치 할 수 없기 때문이다.
- 'sal = 950 AND sal = 3000 AND sal = 1250'
1 | SELECT * FROM emp WHERE sal > ALL (950, 3000, 1250) |
- 3000보다 큰 값만 표시된다. 'sal > 950 AND sal > 3000 AND sal > 1250' 과 동일하다.
1 | SELECT * FROM emp WHERE sal <font color= "#e31600" ><</font> ALL (950, 3000, 1250) |
- 950보다 작은 값만 표시된다. 'sal < 950 AND sal < 3000 AND sal < 1250' 과 동일하다.
결국 ALL은 나올 수 있는 모든 조건에 AND 연산을 수행한것과 동일한 결과를 얻는다.
정리하자면.....
비교 연산자와 ANY
최소한 하나라도 만족하는 것
> ANY : 최소값 보다 크면
>= ANY : 최소값보다 크거나 같으면
< ANY : 최대값보다 작으면
<= ANY : 최대값보다 작거나 같으면
= ANY : IN과 같은 효과
!= ANY : NOT IN과 같은 효과
비교 연산자와 ALL
ANY와는 반대되는 개념입니다. 모든 조건에 만족 되는것
> ALL : 최대값 보다 크면
>= ALL : 최대값보다 크거나 같으면
< ALL : 최소값보다 작으면
<= ALL : 최소값보다 작거나 같으면
= ALL : SUBSELECT의 결과가 1건이면 상관없지만 여러 건이면 오류가 발생합니다.
!= ALL : 위와 마찬가지로 SUBSELECT의 결과가 여러 건이면 오류가 발생합니다.
'프로그래밍 > sql Tip' 카테고리의 다른 글
sql 실습문제 링크들.. (0) | 2015.07.09 |
---|---|
각종 샘플DB 데이터들 (0) | 2015.04.22 |
sql 날짜, 언어등 세션 바꾸기. (0) | 2015.04.22 |
rownum 이용해서 부분데이터 꺼낼때... (0) | 2015.04.22 |
오라클 SID 알아내는 쿼리 (0) | 2015.04.22 |