본문 바로가기
초보자를 위한 SQL 200제/이론 & 예제

014 비교 연산자 배우기 (IN)

by Hwanii_ 2023. 7. 12.
728x90

여러 개의 리스트 값을 검색 하려면 어떻게 해야할까 ?

 

여러 개의 리스트 값을 조회 할때는, IN 연산자를 사용 하면 된다.

 

1.

IN 연산자를 사용 하지 않은 경우.

 

직업이  SALESMAN, ANALYST, MANAGER인

사원들의 이름, 월급, 직업을 출력 하기.

 

SELECT ename, sal, job
FROM emp
WHERE (job = 'SALESMAN' or job = 'ANALYST' or job = 'MANAGER');

ENAME             SAL JOB      
---------- ---------- ---------
BLAKE            2850 MANAGER  
CLARK            2450 MANAGER  
JONES            2975 MANAGER  
MARTIN           1250 SALESMAN 
ALLEN            1600 SALESMAN 
TURNER           1500 SALESMAN 
WARD             1250 SALESMAN 
FORD             3000 ANALYST  
SCOTT            3000 ANALYST  

9개 행이 선택되었습니다.

 

2.

IN 연산자를 사용한 경우.

 

직업이  SALESMAN, ANALYST, MANAGER인

사원들의 이름, 월급, 직업을 출력 하기.

 

SELECT ename, sal, job
FROM emp
WHERE job IN ('SALESMAN','ANALYST','MANAGER');

ENAME             SAL JOB      
---------- ---------- ---------
BLAKE            2850 MANAGER  
CLARK            2450 MANAGER  
JONES            2975 MANAGER  
MARTIN           1250 SALESMAN 
ALLEN            1600 SALESMAN 
TURNER           1500 SALESMAN 
WARD             1250 SALESMAN 
FORD             3000 ANALYST  
SCOTT            3000 ANALYST  

9개 행이 선택되었습니다.

 

1번의 쿼리문과 동일한 값이 출력 되는 모습을 확인 할 수 있다.

 

3.

IN 연산자를 사용하면, 여러개의 조건값을 한 번에 조회 할 수 있다.

 

이퀄 연산자 ( = ) 를 사용 해도 1번과 같이 가능은 하긴 한데,

or 로 이어준 상황 이기에, 가독성이 떨어지고, 코드가 복잡 해 진다.

 

따라서, 여러 리스트의 값을 조회 할 수 있는 IN 연산자를 사용 하면 좋다.

 

4.

직업이  SALESMAN, ANALYST, MANAGER 가 아닌

사원들의 이름, 월급, 직업을 출력 하기.

 

SELECT ename, sal, job
FROM emp
WHERE job NOT IN ('SALESMAN','ANALYST','MANAGER');

ENAME             SAL JOB      
---------- ---------- ---------
KING             5000 PRESIDENT
JAMES             950 CLERK    
SMITH             800 CLERK    
ADAMS            1100 CLERK    
MILLER           1300 CLERK

 

IN 연산자 앞에 NOT 을 붙혀 주면 된다.

 

5.

IN 연산자를 사용 하지 않으면 SQL 구문이 아래와 같이 복잡해 진다.

 

SELECT ename, sal, job
FROM emp
WHERE (job != 'SALESMAN' and job != 'ANALYST' and job != 'MANAGER');

ENAME             SAL JOB      
---------- ---------- ---------
KING             5000 PRESIDENT
JAMES             950 CLERK    
SMITH             800 CLERK    
ADAMS            1100 CLERK    
MILLER           1300 CLERK

 

또한, and를 사용 해야 할지, or을 사용 해야 할지 헷갈릴 수도 있을듯 하다.

 

지금 경우에는 직업이

세일즈맨도 아니고 ~

아날리스트도 아니고 ~

매니저도 아니어야 하기 때문에,

 

and 를 사용 하는게 맞다.

반응형