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’가 한 번 더 포함된 데이터
[SQLD] WHERE 절 | Archive