inblog logo
|
DailyCoding
    SQLD

    2-1-3. WHERE절

    박은서's avatar
    박은서
    Feb 25, 2026
    2-1-3. WHERE절
    Contents
    1. WHERE절 개요1️⃣ WHERE절 기초 개념2️⃣ WHERE절 연산자의 종류3️⃣ WHERE절 연산자의 우선순위2. 비교 연산자1️⃣ 숫자 데이터 타입 비교 연산2️⃣ 문자 데이터 타입 비교 연산3. SQL연산자의 종류1️⃣ SQL 연산자2️⃣ 이스케이프 문자(Escape Character) 사용4. 논리 연산자1️⃣ 논리 연산자2️⃣ 논리 연산자 우선 순위

    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
    Contents
    1. WHERE절 개요1️⃣ WHERE절 기초 개념2️⃣ WHERE절 연산자의 종류3️⃣ WHERE절 연산자의 우선순위2. 비교 연산자1️⃣ 숫자 데이터 타입 비교 연산2️⃣ 문자 데이터 타입 비교 연산3. SQL연산자의 종류1️⃣ SQL 연산자2️⃣ 이스케이프 문자(Escape Character) 사용4. 논리 연산자1️⃣ 논리 연산자2️⃣ 논리 연산자 우선 순위

    DailyCoding

    RSS·Powered by Inblog