2026 SQLD 필기 2과목 1장 4절 | WHERE·날짜 범위·연산자 우선순위 — 핵심 이론

데이터위자드 ·

2026 SQLD 필기 2과목 1장 4절 | WHERE·날짜 범위·연산자 우선순위 — 핵심 이론

필기 · 핵심 이론

WHERE에서는 비교·논리·패턴 조건을 조합합니다. 조건마다 TRUE인지 계산한 다음 AND·OR의 결합을 판단해야 합니다. 특히 날짜의 시간 부분, BETWEEN의 양끝 포함, 괄호 없는 OR가 결과를 바꾸는지 확인하세요.

이번 절에서 익힐 내용

AND와 OR · BETWEEN의 양끝 포함 · 월별 날짜 조회 · LIKE와 와일드카드 · IN과 조건 집합

1. AND와 OR

일반적인 우선순위에서 AND는 OR보다 먼저 결합합니다. A OR B AND C는 A OR (B AND C)입니다. 서울 또는 부산이면서 활성 회원을 찾으려면 (지역=서울 OR 지역=부산) AND 활성=1처럼 묶어야 합니다.

괄호는 사람의 의도를 드러내는 수단입니다. 조건이 길면 각 비교 결과를 적고, 괄호·NOT·AND·OR 순서로 평가해 보세요. NULL이 있다면 TRUE/FALSE 외에 UNKNOWN도 함께 고려합니다.

핵심 기준

AND가 OR보다 우선하므로 필요한 논리 묶음은 괄호로 표시한다.

예제로 적용하기

지역이 서울이고 활성=0인 행에 지역=서울 OR 지역=부산 AND 활성=1을 적용하면?

풀이와 판단 과정

결론: 선택된다.

서울 조건이 TRUE이므로 OR 전체가 TRUE입니다. 활성 조건을 두 지역에 모두 적용하려면 괄호가 필요합니다.

2. BETWEEN의 양끝 포함

BETWEEN a AND b는 a 이상 b 이하입니다. 수량 BETWEEN 10 AND 20이면 10과 20을 모두 포함합니다. 두 경계가 거꾸로 주어지면 자동으로 정렬해 주는 것이 일반적인 규칙은 아닙니다.

날짜 컬럼에 시간이 있으면 종료일 자정까지 비교하는 조건은 그날 오후를 놓칩니다. 월별 조회는 시작일 이상·다음 달 시작일 미만의 반열린 구간으로 작성하면 시간 정밀도에 덜 의존합니다.

핵심 기준

BETWEEN은 시작 값과 종료 값을 모두 포함한다.

예제로 적용하기

금액 BETWEEN 100 AND 200에서 포함되는 값은?

풀이와 판단 과정

결론: 100과 200 모두

BETWEEN은 >=100 AND <=200과 같은 경계 포함 의미입니다.

3. 월별 날짜 조회

11월 전체를 조회할 때 일시 >= 11월 1일 AND 일시 < 12월 1일로 표현하면 11월 30일의 모든 시간을 포함합니다. 11월 30일 00:00:00을 상한으로 둔 BETWEEN은 그 이후 시간을 놓칩니다.

끝을 23:59:59로 고정하는 방식은 소수 초 정밀도에서 누락이 생길 수 있습니다. 비교할 경계는 컬럼과 호환되는 날짜형 리터럴이나 명시적 변환으로 만들고 문자 정렬에 기대지 않는 편이 명확합니다.

핵심 기준

월 전체의 일시는 다음 달 첫날 미만으로 조회할 수 있다.

예제로 적용하기

11월 30일 18:00을 포함하는 안전한 11월 조회 상한은?

풀이와 판단 과정

결론: 12월 1일 00:00 미만

다음 달 시작 미만이면 말일 오후와 소수 초가 있는 값도 포함할 수 있습니다.

4. LIKE와 와일드카드

%는 0개 이상 문자, _는 한 문자에 대응합니다. LIKE A%는 A로 시작하는 문자열을 찾고 LIKE A_는 A 뒤에 정확히 한 문자가 오는 값을 찾습니다. 실제 밑줄이나 퍼센트를 검색하려면 ESCAPE 등 제품 문법을 확인합니다.

패턴 비교와 정규표현식은 다른 기능입니다. 대소문자 구별은 문자 비교 설정에 따라 달라질 수 있습니다. 공백도 문자이므로 앞뒤 공백이 남아 있을 때의 결과를 살펴야 합니다.

핵심 기준

LIKE의 _는 한 문자에 대응한다.

예제로 적용하기

LIKE 'A_'에 맞는 문자열은?

풀이와 판단 과정

결론: AB

A 뒤에 정확히 한 글자가 있으므로 AB가 일치합니다.

5. IN과 조건 집합

IN은 목록 중 일치하는 값이 있는지 검사합니다. 지역 IN (서울,부산)은 두 동등 비교를 OR로 묶은 것과 연결됩니다. 목록에 같은 값이 반복되어도 원본 행이 그 횟수만큼 복제되지는 않습니다.

서브쿼리의 결과를 목록으로 사용할 수도 있습니다. 다만 NOT IN과 NULL의 조합은 3값 논리를 다시 점검해야 합니다. 연산자 이름이 비슷하다고 IN을 조인과 동일한 행 생성 방식으로 이해하면 안 됩니다.

핵심 기준

IN 목록의 값이 중복되어도 같은 원본 행이 자동으로 복제되지 않는다.

예제로 적용하기

id=1인 한 행에 WHERE id IN (1,1,2)를 적용하면?

풀이와 판단 과정

결론: 한 번 선택된다.

IN은 조건 판정이며 목록의 중복을 기준으로 결과 행을 증식시키지 않습니다.

한눈에 비교하기

조건포함 범위주의점
BETWEEN 10 AND 2010~20, 양끝 포함경계 역전 금지
LIKE 'A_'A 뒤 한 문자%와 구별
월 시작 이상·다음 달 시작 미만한 달의 모든 일시시간 부분 보존
A OR B AND CA OR (B AND C)괄호로 의도 표시

순서대로 풀어 보는 예제

활성 고객 중 서울·부산 거주자를 찾는 조건은 (region IN (서울,부산)) AND active=1로 정리할 수 있습니다. 여기에 11월 가입자 조건을 붙이면 가입일시>=11월 1일 AND 가입일시<12월 1일을 추가합니다.

조건을 먼저 지역·활성·기간 세 묶음으로 나누고 표본 행을 하나씩 통과시켜 보세요. 서울·비활성 고객이나 부산·12월 가입 고객이 섞이는지 확인하면 괄호와 경계 오류를 발견하기 쉽습니다.

SELECT * FROM members
WHERE region IN ('서울','부산')
  AND active = 1
  AND joined_at >= TIMESTAMP '2026-11-01 00:00:00'
  AND joined_at <  TIMESTAMP '2026-12-01 00:00:00';

헷갈리는 문장 바로잡기

AND와 OR

잘못된 판단 OR는 언제나 AND보다 우선한다.

올바른 판단: AND가 OR보다 우선하므로 필요한 논리 묶음은 괄호로 표시한다.

BETWEEN의 양끝 포함

잘못된 판단 BETWEEN은 양끝을 모두 제외한다.

올바른 판단: BETWEEN은 시작 값과 종료 값을 모두 포함한다.

월별 날짜 조회

잘못된 판단 11월 30일 자정 이하는 11월 전체다.

올바른 판단: 월 전체의 일시는 다음 달 첫날 미만으로 조회할 수 있다.

LIKE와 와일드카드

잘못된 판단 %는 반드시 한 문자다.

올바른 판단: LIKE의 _는 한 문자에 대응한다.

IN과 조건 집합

잘못된 판단 IN 목록에 같은 값이 두 번 있으면 원본 행이 두 번 나온다.

올바른 판단: IN 목록의 값이 중복되어도 같은 원본 행이 자동으로 복제되지 않는다.

이론을 정리했다면 같은 절의 객관식 문제에서 조건과 예외를 확인하세요. 정답을 고른 뒤에는 틀린 선택지가 왜 성립하지 않는지도 설명해 보세요.

핵심 개념 확인 — 객관식 5문제

설명을 읽은 뒤 아래 다섯 문항을 풀어 보세요. 정답을 고르고 틀린 선택지의 오류도 설명할 수 있으면 이 단원의 기준을 이해한 것입니다.

문제 1

WHERE·날짜 범위·연산자 우선순위에서 AND와 OR에 대한 설명으로 옳은 것은?

  1. ① OR는 언제나 AND보다 우선한다.
  2. ② WHERE는 FALSE인 행도 모두 반환한다.
  3. ③ AND가 OR보다 우선하므로 필요한 논리 묶음은 괄호로 표시한다.
  4. ④ 괄호는 SQL에서 사용할 수 없다.
정답과 해설 보기

정답 ③

일반적인 우선순위에서 AND는 OR보다 먼저 결합합니다. A OR B AND C는 A OR (B AND C)입니다. 서울 또는 부산이면서 활성 회원을 찾으려면 (지역=서울 OR 지역=부산) AND 활성=1처럼 묶어야 합니다. 괄호는 사람의 의도를 드러내는 수단입니다. 조건이 길면 각 비교 결과를 적고, 괄호·NOT·AND·OR 순서로 평가해 보세요. NULL이 있다면 TRUE/FALSE 외에 UNKNOWN도 함께 고려합니다.

기억할 핵심

AND가 OR보다 우선하므로 필요한 논리 묶음은 괄호로 표시한다.

문제 2

WHERE·날짜 범위·연산자 우선순위에서 BETWEEN의 양끝 포함에 대한 설명으로 옳은 것은?

  1. ① BETWEEN은 시작 값과 종료 값을 모두 포함한다.
  2. ② BETWEEN 20 AND 10은 자동으로 10~20으로 바뀐다.
  3. ③ 날짜의 시간은 비교에 영향을 주지 않는다.
  4. ④ BETWEEN은 양끝을 모두 제외한다.
정답과 해설 보기

정답 ①

BETWEEN a AND b는 a 이상 b 이하입니다. 수량 BETWEEN 10 AND 20이면 10과 20을 모두 포함합니다. 두 경계가 거꾸로 주어지면 자동으로 정렬해 주는 것이 일반적인 규칙은 아닙니다. 날짜 컬럼에 시간이 있으면 종료일 자정까지 비교하는 조건은 그날 오후를 놓칩니다. 월별 조회는 시작일 이상·다음 달 시작일 미만의 반열린 구간으로 작성하면 시간 정밀도에 덜 의존합니다.

기억할 핵심

BETWEEN은 시작 값과 종료 값을 모두 포함한다.

문제 3

WHERE·날짜 범위·연산자 우선순위에서 월별 날짜 조회에 대한 설명으로 옳은 것은?

  1. ① 일시는 문자열과 항상 같은 정렬 규칙이다.
  2. ② 월 전체의 일시는 다음 달 첫날 미만으로 조회할 수 있다.
  3. ③ 11월 30일 자정 이하는 11월 전체다.
  4. ④ 모든 DBMS의 시간 정밀도는 초 단위다.
정답과 해설 보기

정답 ②

11월 전체를 조회할 때 일시 >= 11월 1일 AND 일시 < 12월 1일로 표현하면 11월 30일의 모든 시간을 포함합니다. 11월 30일 00:00:00을 상한으로 둔 BETWEEN은 그 이후 시간을 놓칩니다. 끝을 23:59:59로 고정하는 방식은 소수 초 정밀도에서 누락이 생길 수 있습니다. 비교할 경계는 컬럼과 호환되는 날짜형 리터럴이나 명시적 변환으로 만들고 문자 정렬에 기대지 않는 편이 명확합니다.

기억할 핵심

월 전체의 일시는 다음 달 첫날 미만으로 조회할 수 있다.

문제 4

WHERE·날짜 범위·연산자 우선순위에서 LIKE와 와일드카드에 대한 설명으로 옳은 것은?

  1. ① %는 반드시 한 문자다.
  2. ② LIKE는 정규표현식과 모든 문법이 같다.
  3. ③ LIKE의 _는 한 문자에 대응한다.
  4. ④ _는 항상 숫자만 뜻한다.
정답과 해설 보기

정답 ③

%는 0개 이상 문자, _는 한 문자에 대응합니다. LIKE A%는 A로 시작하는 문자열을 찾고 LIKE A_는 A 뒤에 정확히 한 문자가 오는 값을 찾습니다. 실제 밑줄이나 퍼센트를 검색하려면 ESCAPE 등 제품 문법을 확인합니다. 패턴 비교와 정규표현식은 다른 기능입니다. 대소문자 구별은 문자 비교 설정에 따라 달라질 수 있습니다. 공백도 문자이므로 앞뒤 공백이 남아 있을 때의 결과를 살펴야 합니다.

기억할 핵심

LIKE의 _는 한 문자에 대응한다.

문제 5

WHERE·날짜 범위·연산자 우선순위에서 IN과 조건 집합에 대한 설명으로 옳은 것은?

  1. ① IN 목록의 값이 중복되어도 같은 원본 행이 자동으로 복제되지 않는다.
  2. ② IN에는 서브쿼리를 사용할 수 없다.
  3. ③ IN은 숫자만 비교한다.
  4. ④ IN 목록에 같은 값이 두 번 있으면 원본 행이 두 번 나온다.
정답과 해설 보기

정답 ①

IN은 목록 중 일치하는 값이 있는지 검사합니다. 지역 IN (서울,부산)은 두 동등 비교를 OR로 묶은 것과 연결됩니다. 목록에 같은 값이 반복되어도 원본 행이 그 횟수만큼 복제되지는 않습니다. 서브쿼리의 결과를 목록으로 사용할 수도 있습니다. 다만 NOT IN과 NULL의 조합은 3값 논리를 다시 점검해야 합니다. 연산자 이름이 비슷하다고 IN을 조인과 동일한 행 생성 방식으로 이해하면 안 됩니다.

기억할 핵심

IN 목록의 값이 중복되어도 같은 원본 행이 자동으로 복제되지 않는다.

범위 확인

2026년 학습 범위를 기준으로 구성했습니다. 시험 시행기관의 자격 안내·출제 기준에서 과목과 변경 공지를 확인할 수 있습니다.

이 단원의 객관식 문제 풀기

이전 · 문자·숫자 함수와 CASE

다음 · 집계·GROUP BY·HAVING·ORDER BY

SQLD 전체 목차

과목별 이론

단원별 객관식

실습

필기 모의고사

스터디클럽의 다른 강의 보기