SQL : 기타연산(IN, ANY, ALL, EXISTS)

Dohyeon Kong·2023년 12월 10일

SQL💾

목록 보기
1/1

SQL의 기타 연산자

  • IN
  • ANY
  • ALL
  • EXISTS

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과 차이점은 비교 연산자를 사용한다는 점이다.
  • ANY 연산자는 나올 수 있는 모든 조건에 OR연산을 수행한 것과 동일한 결과를 얻는 연산이다.
SELECT * FROM EMP WHERE SAL = ANY(950, 3000, 1250);
-- SAL = 950 OR SAL = 3000 OR SAL = 1250
-- IN연산자와 같은 의미이다.
SELECT * FROM EMP WHERE SAL > ANY(950, 3000, 1250);
-- SAL > 950 OR SAL > 3000 OR SAL > 1250
-- 이 쿼리의 결과는 SAL이 950보다 큰 값을 모두 출력한다.
SELECT * FROM EMP WHERE SAL < ANY(950, 3000, 1250)
-- SAL < 950 OR SAL < 3000 OR SAL < 1250
-- 이 쿼리의 결과는 SAL이 3000보다 작은 값을 모두 출력한다.

3. ALL 연산자

  • 전체 값을 비교하여 모두 만족하면 TRUE이다.
  • ALL 연산자는 모든 조건에 AND연산을 수행한 것과 동일한 결과를 얻는다.
SELECT * FROM EMP WHERE SAL = ALL(950, 3000, 1250)
-- SAL = 950 AND SAL = 3000 AND SAL = 1250
-- 이 쿼리의 결과는 없다. 왜냐하면 모든 값과 일치할 수 없기 때문이다.
SELECT * FROM EMP WHERE SAL > ALL(950, 3000, 1250)
-- SAL > 950 AND SAL > 3000 AND SAL > 1250
-- 이 쿼리의 결과는 SAL이 3000보다 큰 값만 나온다.
SELECT * FROM EMP WHERE SAL < ALL(950, 3000, 1250)
-- SAL < 950 AND SAL < 3000 AND SAL < 1250
-- 이 쿼리의 결과는 SAL이 950보다 작은 값만 나온다.

4. EXISTS 연산자

  • 만족하는 값이 하나라도 존재하면 TRUE이다.
  • 아무 행도 반환하지 않으면 FALSE이다.
    NOT EXIST 연산자는 일치되지 않으면 메인 쿼리 테이블의 모든 행을 반환한다.
SELECT * FROM EMP WHERE EXISTS(서브쿼리);

정리

= ANY : IN의 결과값과 같다.
>ANY : 최소값 보다 크면 TRUE
>= ANY : 최소값보다 크거나 같으면 TRUE
< ANY : 최대값보다 작으면 TRUE
<= ANY : 최대값보다 작거나 같으면 TRUE
!= ANY : NOT IN의 결과값과 같다.

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

profile
티스토리로 기술 블로그 이전

0개의 댓글