✏️ SQLD

[SQLD] WHERE 절: IN, BETWEEN, LIKE, IS NULL

haeriyouu 2025. 3. 1. 14:07

📍 IN 연산자

-- IN 연산자
SELECT EMPNO, ENAME, DEPTNO, SAL FROM EMP
WHERE DEPTNO IN (20, 30) /* (DEPTNO=20 OR DEPTNO=30)  */
AND (SAL>=1100 AND SAL<=2500);

-- NOT IN
SELECT EMPNO, ENAME, DEPTNO, SAL FROM EMP
WHERE DEPTNO NOT IN (20, 30) /* NOT(DEPTNO=20 OR DEPTNO=30) */ 
AND (SAL>=1100 AND SAL<=2500);

 

📍 BETWEEN 연산자

-- BETWEEN 연산자
SELECT EMPNO, ENAME, DEPTNO, SAL FROM EMP
WHERE DEPTNO IN (20, 30) 
AND SAL BETWEEN 1100 AND 2500; /* (SAL>=1100 AND SAL<=2500); */

-- NOT BETWEEN
SELECT EMPNO, ENAME, DEPTNO, SAL FROM EMP
WHERE DEPTNO IN (20, 30) 
AND SAL NOT BETWEEN 1100 AND 2500; /* NOT (SAL>=1100 AND SAL<=2500); */

 

📍 LIKE 연산자

-- LIKE 연산자
-- _는 자리수를 표현

-- A로 시작하는 직원 정보
SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE 'A%';
-- J로 시작하고 ES로 끝나는 직원 정보
SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE 'J%ES';
-- 이름이 4글자인 직원 정보
SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE '____';
-- 이름이 4글자고 D로 끝나는 직원 정보
SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE '____D';

 

📍 IS NULL

/* WHERE 절에서의 NULL 처리 */
-- NULL과 어떤 비교 연산을 해도 모두 FALSE

-- NULL을 뽑아내는 법
SELECT EMPNO, ENAME, COMM FROM EMP WHERE COMM IS NULL;
SELECT EMPNO, ENAME, COMM FROM EMP WHERE COMM IS NOT NULL;

- 기출 문제에서는 IS NOT NULL 부분을 IS를 빼고 NOT NULL 로 헷갈리게 한다.