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 를 사용 하는게 맞다.
반응형
'초보자를 위한 SQL 200제 > 이론 & 예제' 카테고리의 다른 글
016 대소문자 변환 함수 배우기 (UPPER, LOWER, INITCAP) (0) | 2023.07.12 |
---|---|
015 논리 연산자 배우기 (AND, OR, NOT) (0) | 2023.07.12 |
013 비교 연산자 배우기 (IS NULL) (0) | 2023.07.12 |
012 비교 연산자 배우기 (LIKE) (0) | 2023.07.12 |
011 비교 연산자 배우기 (BETWEEN AND) (0) | 2023.07.12 |