CS
[SQLD] WHERE 절
2026년 02월 13일 18:14
SQLD 2과목 - WHERE 절
WHERE 절
WHERE 절은 테이블에서 원하는 조건에 맞는 데이터만 조회할때 사용하는 절이다.
여러 조건을 지정할 수 있으며, AND와 OR 연산자로 조건을 연결할 수 있다.
NULL 값 조회 시 IS NULL 또는 IS NOT NULL 연산자를 사용한다.
⭐️ 집계함수(SUM, AVG, COUNT 등)는 WHERE 절에서 사용할 수 없다.
⭐️ 컬럼 별칭은 WHERE 절에서 사용할 수 없다.
SELECT * | 컬럼명 | 표현식
FROM 테이블명 또는 뷰명
WHERE 조회할 데이터 조건;
주의사항
- 문자 또는 날짜 상수 표현 시 홑따옴표 사용
- Oracle에서는 문자 상수의 대소문자 구분
- SQL Server에서는 기본 설정 기준으로 문자 상수의 대소문자 구분 ❌
논리 연산자
NOT > AND > OR 순으로 연산 우선순위가 적용됨
① AND 연산자
모든 조건을 동시에 만족하는 교집합 반환
SELECT EMPNO FROM EMP
WHERE DEPTNO = 10 AND SAL >= 2000;
-- DEPTNO가 10 이면서 SAL이 2000 이상인 직원 출력
② OR 연산자
조건 중 하나라도 만족하면 포함하는 합집합 반환
SELECT EMPNO FROM EMP
WHERE DEPTNO = 10 OR SAL >= 2000;
-- DEPTNO가 10 이거나 SAL이 2000 이상인 직원 출력
③ NOT 연산자
조건 결과의 반대 집합, 즉 여집합 반환
SELECT EMPNO FROM EMP
WHERE NOT (SAL < 3000);
IN 연산자
여러 상수 중 하나와 일치하는 조건 전달
SELECT EMPNO FROM EMP
WHERE ENAME IN ('SMITH', 'SCOTT');
-- 이름이 SMITH, SCOTT 중 하나에 포함되는 직원 반환
BETWEEN A AND B 연산자
A 이상이고 B 이하인 조건을 만족하는 대상을 선택
❗️ A는 반드시 B보다 작아야 하며, 반대로 작성할 경우 공집합
SELECT EMPNO FROM EMP
WHERE SAL BETWEEN 1000 AND 2000;
-- 1000 <= SAL <= 2000
SELECT EMPNO FROM EMP
WHERE SAL NOT BETWEEN 1000 AND 2000;
-- SAL < 1000, SAL > 2000
LIKE 연산자
정확히 일치하지 않아도 되는 패턴 조건을 전달할 때 사용하는 연산자
와일드카드 문자(%, _)와 함께 사용
- %: 자리수 제한 없이 모든 문자열 의미
- _: 한 글자를 의미, _ 하나당 한 자리의 모든 값
예시
- ENAME LIKE 'S%'
→ 이름이 ‘S’로 시작하는 조건 - ENAME LIKE '%S%'
→ 이름에 ‘S’가 포함된 조건 - ENAME LIKE '%S'
→ 이름이 ‘S’로 끝나는 조건 - ENAME LIKE '_S%'
→ 이름의 두 번째 글자가 ‘S’인 조건 - ENAME LIKE '__S__'
→ 이름의 가운데 글자가 ‘S’이며, 전체 길이가 5 글자인 조건
ESCAPE CHARACTER
% 또는 _를 와일드카드가 아닌 일반 문자로 조회하고 싶을 때 사용
특정 문자를 ESCAPE 문자로 지정하여 그 뒤에 오는 % 또는 _를 문자 그대로 인식하게 함
예시
- WHERE ENAME LIKE 'A\_%' ESCAPE '\'
→ 이름이 ‘A_’로 시작하는 조건 (_ 를 문자로 인식) - ENAME LIKE '%!%%' ESCAPE '!'
→ 이름에 ‘%’ 문자가 포함된 조건
SELECT COUNT(*)
FROM TAB
WHERE COL LIKE '_A%%A%';
-- 두번째 글자가 ‘A’이면서, 이후 문자열 중 어딘가에 ‘A’가 한 번 더 포함된 데이터
