2-1-3. WHERE절

박은서's avatar
Feb 25, 2026
2-1-3. WHERE절

1. WHERE절 개요

1️⃣ WHERE절 기초 개념

1) WHERE절

  • SQL 쿼리에서 특정 조건을 만족하는 행만 선택하기 위해 사용됨
  • 데이터베이스에서 원하는 데이터를 필터링하는 데 필수

2) 기본 문법

SELECT 칼럼명 [ALIAS 명] FROM 테이블명 WHERE 조건절;

3) 예시

SELECT * FROM EMP WHERE SAL > 2000 AND DEPTNO = 10;
EMPNO
ENAME
JOB
MGR
HIREDATE
SAL
COMM
DEPTNO
7839
KING
PRESIDENT
NULL
1981-11-17
5000
NULL
10
7782
CLARK
MANAGER
7839
1981-05-09
2450
NULL
10

2️⃣ WHERE절 연산자의 종류

1) 비교 연산자

연산자
내용
=, <>, >, <, >=, <=
부등호 기호 연산

2) 부정 비교 연산자

연산자
내용
!=
같지 않다 (=의 부정)
^=
같지 않다 (=의 부정)
<>
같지 않다 (=의 부정) → 표준 SQL
NOT [칼럼명] =
칼럼명과 같지 않다
NOT [칼럼명] >
칼럼명보다 크지 않다

3) SQL 연산자

연산자
내용
BETWEEN a AND b
a와 b 사이의 값
IN (list)
list에 있는 값들 중 어느 하나라도 일치
LIKE ‘비교문자열’
‘비교문자열’과 일치하면 참(TRUE) → (%, _ 사용)
IS NULL
NULL 값

4) 부정 SQL 연산자

연산자
내용
NOT BETWEEN a AND b
a와 b의 값 사이의 값을 가지지 않음
NOT IN (list)
list에 있는 값들 중 어느 하나라도 일치하지 않음
IS NOT NULL
NULL 값을 갖지 않음

5) 논리 연산자

연산자
내용
AND
두 개 이상의 조건이 모두 참(TRUE)일 때만 전체 조건을 참으로 반환 모든 조건을 동시에 만족해야 함
OR
두 개 이상의 조건 중 하나라도 참(TRUE)일 경우 전체 조건을 참으로 반환 하나의 조건만 만족해도 됨
NOT
조건의 참/거짓을 반전 조건이 참(TRUE)이면 거짓(FALSE) 반환, 조건이 거짓(FALSE)이면 참(TRUE) 반환

3️⃣ WHERE절 연산자의 우선순위

  • 괄호 → 산술 연산자 → 문자열 연결 연산자(||, +) → 비교 연산자&SQL 연산자 → NOT 연산자 → AND → OR

2. 비교 연산자

1️⃣ 숫자 데이터 타입 비교 연산

1) 같다 (=)

SELECT ENAME, JOB, SAL FROM EMP WHERE SAL = 3000;
ENAME
JOB
SAL
FORD
ANALYST
3000
SCOTT
ANALYST
3000

2) 같지 않다 (<>, !=)

SELECT ENAME, JOB, SAL FROM EMP WHERE SAL <> 3000;
ENAME
JOB
SAL
KING
PRESIDENT
5000
BLAKE
MANAGER
2850
CLARD
MANAGER
2450

3) 크거나 같다 (>=), 작거나 같다 (<=)

SELECT ENAME, JOB, SAL FROM EMP WHERE SAL >= 2000;
ENAME
JOB
SAL
KING
PRESIDENT
5000
BLAKE
MANAGER
2850
CLARD
MANAGER
2450

4) 복합 조건과 괄호 사용

SELECT ENAME, JOB, SAL, DEPTNO FROM EMP WHERE (SAL > 2000 AND DEPTNO = 10) OR (SAL BETWEEN 1500 AND 3000);
ENAME
JOB
SAL
DEPTNO
KING
PRESIDENT
5000
10
BLAKE
MANAGER
2850
30
CLARD
MANAGER
2450
10
JONES
MANAGER
2975
20

2️⃣ 문자 데이터 타입 비교 연산

1) 같다 (=)

SELECT ENAME, JOB, SAL FROM EMP WHERE EMANE = 'SMITH';
ENAME
JOB
SAL
SMITH
CLERK
800

2) 같지 않다 (!=, <>)

SELECT ENAME, JOB, SAL FROM EMP WHERE EMANE != 'SMITH';
ENAME
JOB
SAL
KING
PRESIDENT
5000
BLAKE
MANAGER
2850
CLARK
MANAGER
2450

3) 크다 (>), 작다 (<)

  • 크다 (>) : 특정 문자열보다 사전 순으로 큰 값(사전 순으로 뒤에 나오는 값)을 가진 행 선택
  • 작다 (<) : 특정 문자열보다 사전 순으로 작은 값(사전 순으로 앞에 나오는 값)을 가진 행 선택
SELECT ENAME, JOB, SAL FROM EMP WHERE EMANE > 'M';
ENAME
JOB
SAL
MARTIN
SALESMAN
1250
TURNER
SALESMAN
1500
WARD
SALESMAN
1250
📎
ENAME > ‘M’은 정확히 M만 제외됨
MARTIN은 사전 순서상 M 뒤에 나옴

4) 크거나 같다 (>=), 작거나 같다 (<=)

SELECT ENAME, JOB, SAL FROM EMP WHERE EMANE >= 'M';
ENAME
JOB
SAL
MARTIN
SALESMAN
1250
TURNER
SALESMAN
1500
WARD
SALESMAN
1250

3. SQL연산자의 종류

1️⃣ SQL 연산자

1) BETWEEN 연산자

SELECT ENAME, JOB, SAL FROM EMP WHERE SAL BETWEEN 1500 AND 3000;
ENAME
JOB
SAL
BLAKE
MANAGER
2850
CLARD
MANAGER
2450
JONES
MANAGER
2975

2) IN(list)

SELECT ENAME, JOB, SAL, DEPTNO FROM EMP WHERE DEPTNO IN (10, 20, 30);
ENAME
JOB
SAL
DEPTNO
KING
PRESIDENT
5000
10
BLAKE
MANAGER
2850
30
CLARD
MANAGER
2450
10

3) LIKE ‘비교문자열’

SELECT ENAME, JOB, SAL FROM EMP WHERE ENAME LIKE 'S%';
S로 시작하는 모든 문자
ENAME
JOB
SAL
SMITH
CLERK
800
SCOTT
ANALYST
3000
SELECT ENAME, JOB, SAL FROM EMP WHERE ENAME LIKE '%R%';
R이 포함된 모든 문자
ENAME
JOB
SAL
CLARK
MANAGER
2450
MARTIN
SALESMAN
1250
TURNER
SALESMAN
1500
SELECT ENAME, JOB, SAL FROM EMP WHERE ENAME LIKE 'J_NES';
첫 글자가 J, 세 번째 글자가 N, 네 번째 글자가 E, 다섯 번째 글자가 S인 문자(JONES, JANES, …)
ENAME
JOB
SAL
JONES
MANAGER
2975
SELECT ENAME, JOB, SAL FROM EMP WHERE ENAME LIKE '_A%';
두 번째 글자가 A인 모든 문자
ENAME
JOB
SAL
MARTIN
SALESMAN
1250
JAMES
CLERK
950
WARD
SALESMAN
1250
SELECT ENAME, JOB, SAL FROM EMP WHERE ENAME LIKE '_a%';
두 번째 글자가 a인 모든 문자 (LIKE 연산자는 대소문자 구분함)
ENAME
JOB
SAL
SELECT ENAME, JOB, SAL FROM EMP WHERE UPPER(ENAME) LIKE 'A%';
A 또는 a로 시작하는 모든 문자
ENAME
JOB
SAL
ALLEN
SALESMAN
1600
ADAMS
CLERK
1100

4) IS NULL

SELECT ENAME, JOB, SAL, COMM FROM EMP WHERE COMM IS NULL;
ENAME
JOB
SAL
COMM
KING
PRESIDENT
5000
NULL
BLAKE
MANAGER
2850
NULL
CLARK
MANAGER
2450
NULL

2️⃣ 이스케이프 문자(Escape Character) 사용

  • 와일드카드 문자(%, _, *, …)를 와일드카드 문자가 아닌 일반 문자로 인식하도록 지정하는 특별한 문자
  • 문자 앞에 역슬래시(\)를 붙여 그 안에 들어간 문자를 와일드카드가 아닌 문자로 인식시킴
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE ENAME LIKE 'A\%\_LLEN' ESCAPE '\';
EMPNO
ENAME
JOB
SAL
DEPTNO
9993
A%_LLEN
MANAGER
2975
20

4. 논리 연산자

1️⃣ 논리 연산자

1) AND 연산자를 사용한 복합 조건

SELECT ENAME, JOB, SAL FROM EMP WHERE SAL >= 2000 AND JOB = 'MANAGER';
ENAME
JOB
SAL
BLAKE
MANAGER
2850
CLARK
MANAGER
2450
JONES
MANAGER
2975

2) OR 연산자를 사용한 복합 조건

SELECT ENAME, JOB, SAL, DEPTNO FROM EMP WHERE SAL > 2000 OR DEPTNO = 20;
ENAME
JOB
SAL
DEPTNO
KING
PRESIDEN
5000
10
BLAKE
MANAGER
2850
30
CLARK
MANAGER
2450
10

2) NOT 연산자

SELECT ENAME, JOB, SAL, DEPTNO FROM EMP WHERE NOT SAL > 1000 OR JOB = 'MANAGER';
ENAME
JOB
SAL
DEPTNO
BLAKE
MANAGER
2850
30
CLARK
MANAGER
2450
10
JONES
MANAGER
2975
20
JAMES
CLERK
950
30
SMITH
CLERK
800
20

2️⃣ 논리 연산자 우선 순위

  • NOT → AND → OR
SELECT ENAME, JOB, SAL, DEPTNO FROM EMP WHERE (NOT (SAL > 2000 AND DEPTNO = 10)) OR JOB = 'CLERK';
ENAME
JOB
SAL
DEPTNO
BLAKE
MANAGER
2850
30
JONES
MANAGER
2975
20
MARTIN
SLAESMAN
1250
30
ALLEN
SLAESMAN
1600
30
TURNER
SLAESMAN
1500
30
JAMES
CLERK
950
30
WARD
SLAESMAN
1250
30
FORD
ANALYST
3000
20
SMITH
CLERK
800
20
SCOTT
ANALYST
3000
20
ADAMS
CLERK
1100
20
MILLER
CLERK
1300
10
📎
드모르간 법칙 (De Morgan’s Law)
NOT (A AND B) → (NOT A) OR (NOT B) NOT (A OR B) → (NOT A) AND (NOT B)
 
Share article