본문 바로가기
프로그래밍/MySQL

📊 [SQL 프로젝트] 제11장 BETWEEN - 일정 범위의 데이터 찾기

by 강릉바다의 블로그 2026. 6. 29.

제11장 BETWEEN - 일정 범위의 데이터 찾기

오늘의 질문

상품 가격을 확인하던 중 사장님이 말했습니다.

"가격이 20달러에서 50달러 사이인 상품만 보여 주세요."

 

또 다른 직원은 이렇게 말했습니다.

"2023년 1월부터 3월까지 주문된 내역도 확인하고 싶습니다."

 

학생들은 보통 다음과 같이 작성합니다.

WHERE Price >= 20
AND Price <= 50;

이 SQL도 맞습니다.

하지만 SQL에는 범위를 더욱 읽기 쉽게 표현하는 방법이 있습니다.

바로 BETWEEN입니다.


학습 목표

이번 장을 학습하면 다음 내용을 할 수 있습니다.

  • BETWEEN의 역할을 설명할 수 있다.
  • 숫자 범위를 조회할 수 있다.
  • 날짜 범위를 조회할 수 있다.
  • BETWEEN과 AND 조건의 관계를 이해할 수 있다.
  • NOT BETWEEN을 사용할 수 있다.

11-1. 먼저 실행해 봅시다.

다음 SQL을 실행해 보세요.

SELECT ProductName,
       Price
FROM Products
WHERE Price BETWEEN 20 AND 50;

실행 결과(예)

ProductName Price
Chang 19.00
Chef Anton's Gumbo Mix 21.35
Ikura 31.00
Tofu 23.25

(※ 실제 결과는 데이터에 따라 달라질 수 있습니다.)

20달러 이상, 50달러 이하의 상품만 조회됩니다.


이번에는 같은 기능을 AND 조건으로 작성해 보겠습니다.

SELECT ProductName,
       Price
FROM Products
WHERE Price >= 20
AND Price <= 50;

결과는 BETWEEN과 동일합니다.


잠깐 생각해 보기

두 SQL은 같은 결과를 출력합니다.

그렇다면 왜 BETWEEN을 사용할까요?

이유는 범위를 훨씬 쉽게 읽을 수 있기 때문입니다.

20부터 50까지

라는 의미가 SQL 문장 그대로 나타납니다.


11-2. BETWEEN을 한 줄씩 읽어 보기

SELECT ProductName,
       Price
FROM Products
WHERE Price BETWEEN 20 AND 50;

한 줄씩 읽어 보면

SELECT ProductName, Price

상품명과 가격을 가져오고

FROM Products

Products 테이블에서

WHERE

조건을 만족하는 데이터만 선택하며

Price

가격이

BETWEEN 20 AND 50

20 이상 50 이하이면 출력합니다.

즉,

가격이 20달러 이상이고 50달러 이하인 상품만 조회하라.

라는 의미입니다.


🤔 왜 BETWEEN이 필요할까요?

생각해 봅시다.

다음 SQL도 맞습니다.

WHERE Price >= 20
AND Price <= 50;

하지만

WHERE Price BETWEEN 20 AND 50;

이 훨씬 읽기 쉽습니다.

특히 날짜 범위를 검색할 때 많이 사용합니다.


11-3. 날짜에서도 많이 사용합니다.

다음 SQL을 실행해 보세요.

SELECT OrderID,
       OrderDate
FROM Orders
WHERE OrderDate BETWEEN '1996-07-10'
                    AND '1996-07-20';

해당 기간에 주문된 주문만 조회됩니다.


11-4. NOT BETWEEN

범위 밖의 데이터도 조회할 수 있습니다.

SELECT ProductName,
       Price
FROM Products
WHERE Price NOT BETWEEN 20 AND 50;

20달러 미만이거나

50달러를 초과하는 상품이 조회됩니다.


🤔 BETWEEN은 경계값도 포함할까요?

많은 학생들이 궁금해하는 부분입니다.

다음 SQL에서

BETWEEN 20 AND 50

20도 포함되고

50도 포함됩니다.

즉,

20 ≤ Price ≤ 50

와 같습니다.

이 점을 기억하면 실수를 줄일 수 있습니다.


💡 잠깐! 이것도 알아두세요

BETWEEN은

시작값과 끝값을 모두 포함합니다.

그래서

BETWEEN 1 AND 10

1과 10도 결과에 포함됩니다.


자주 하는 실수

① BETWEEN이 끝값을 포함하지 않는다고 생각한다.

BETWEEN은

시작과 끝을 모두 포함합니다.


② 큰 값과 작은 값을 거꾸로 작성한다.

잘못된 예

BETWEEN 50 AND 20

올바른 예

BETWEEN 20 AND 50

③ 날짜를 따옴표 없이 작성한다.

잘못된 예

BETWEEN 1996-07-10 AND 1996-07-20

올바른 예

BETWEEN '1996-07-10'
    AND '1996-07-20'

④ BETWEEN과 IN을 혼동한다.

BETWEEN은

범위를 비교합니다.

IN은

목록 안의 값을 비교합니다.


실무에서는 어떻게 사용할까요?

회사에서는 BETWEEN을 이용하여

  • 일정 가격대의 상품 조회
  • 특정 기간의 주문 조회
  • 특정 번호 범위 조회
  • 급여 구간 조회
  • 재고 수량 범위 조회

등을 자주 수행합니다.

보고서 작성이나 통계 분석에서도 매우 많이 사용됩니다.


실습

실습 1

가격이 10달러에서 30달러 사이인 상품을 조회하세요.

SELECT ProductName,
       Price
FROM Products
WHERE Price BETWEEN 10 AND 30;

실습 2

1996년 7월 한 달 동안의 주문을 조회하세요.

SELECT OrderID,
       OrderDate
FROM Orders
WHERE OrderDate BETWEEN '1996-07-01'
                    AND '1996-07-31';

실습 3

가격이 50달러보다 비싸거나 10달러보다 저렴한 상품을 조회하세요.

SELECT ProductName,
       Price
FROM Products
WHERE Price NOT BETWEEN 10 AND 50;

실무 미션

당신은 상품관리팀 직원입니다.

팀장님이 말했습니다.

"가격이 30달러에서 60달러 사이인 상품 목록을 만들어 주세요."

 

다음 조건을 만족하는 SQL을 작성해 보세요.

  • Products 테이블 사용
  • ProductName과 Price 조회
  • 가격이 30~60달러
  • 가격이 낮은 순으로 정렬

"같은 결과, 다른 표현"

목적 SQL
가격이 20~50 BETWEEN 20 AND 50
가격이 20 이상, 50 이하 >= 20 AND <= 50

핵심 정리

✔ BETWEEN은 일정 범위를 조회한다.

✔ 시작값과 끝값을 모두 포함한다.

✔ 숫자와 날짜 모두 사용할 수 있다.

✔ NOT BETWEEN으로 범위 밖의 데이터를 조회할 수 있다.

✔ >=와 <=를 함께 사용하는 것과 같은 의미이다.


연습 문제

기본 문제

  1. BETWEEN은 어떤 역할을 하나요?
  2. BETWEEN이 시작값과 끝값을 포함하는 이유를 설명해 보세요.
  3. 다음 SQL의 의미를 설명해 보세요.
SELECT ProductName
FROM Products
WHERE Price BETWEEN 20 AND 40;

응용 문제

  1. Products 테이블에서 가격이 15달러에서 25달러 사이인 상품을 조회하는 SQL을 작성해 보세요.
  2. Orders 테이블에서 1996년 8월에 주문된 내역을 조회하는 SQL을 작성해 보세요.
  3. Products 테이블에서 가격이 100달러보다 비싸거나 20달러보다 저렴한 상품을 조회하는 SQL을 작성해 보세요.

도전 문제

영업팀에서 다음과 같이 요청했습니다.

"주문번호(OrderID)가 10300번부터 10320번까지의 주문만 확인하고 싶습니다."

 

Orders 테이블에서

  • OrderID
  • CustomerID
  • OrderDate

를 조회하는 SQL을 작성해 보세요.


다음 장 예고

이번 장에서는 BETWEEN을 이용하여 일정 범위의 데이터를 조회하는 방법을 배웠습니다.

지금까지 우리는 조건을 이용해 원하는 데이터를 찾는 다양한 방법을 익혔습니다.

  • 하나의 값 비교(=)
  • 여러 값 비교(IN)
  • 범위 비교(BETWEEN)
  • 문자열 검색(LIKE)

이제는 검색한 데이터를 보기 좋게 가공하는 방법을 배울 차례입니다.

예를 들어 사장님이 이렇게 요청할 수 있습니다.

"고객 이름을 모두 대문자로 보여 주세요."

"상품 이름의 앞 5글자만 보여 주세요."

 

이처럼 문자열을 원하는 형태로 변환하거나 일부만 추출하는 기능이 바로 문자열 함수(String Functions)입니다.

다음 장에서는 다양한 문자열 함수를 이용하여 데이터를 더욱 유용하게 활용하는 방법을 배우겠습니다.