제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으로 범위 밖의 데이터를 조회할 수 있다.
✔ >=와 <=를 함께 사용하는 것과 같은 의미이다.
연습 문제
기본 문제
- BETWEEN은 어떤 역할을 하나요?
- BETWEEN이 시작값과 끝값을 포함하는 이유를 설명해 보세요.
- 다음 SQL의 의미를 설명해 보세요.
SELECT ProductName
FROM Products
WHERE Price BETWEEN 20 AND 40;
응용 문제
- Products 테이블에서 가격이 15달러에서 25달러 사이인 상품을 조회하는 SQL을 작성해 보세요.
- Orders 테이블에서 1996년 8월에 주문된 내역을 조회하는 SQL을 작성해 보세요.
- Products 테이블에서 가격이 100달러보다 비싸거나 20달러보다 저렴한 상품을 조회하는 SQL을 작성해 보세요.
도전 문제
영업팀에서 다음과 같이 요청했습니다.
"주문번호(OrderID)가 10300번부터 10320번까지의 주문만 확인하고 싶습니다."
Orders 테이블에서
- OrderID
- CustomerID
- OrderDate
를 조회하는 SQL을 작성해 보세요.
다음 장 예고
이번 장에서는 BETWEEN을 이용하여 일정 범위의 데이터를 조회하는 방법을 배웠습니다.
지금까지 우리는 조건을 이용해 원하는 데이터를 찾는 다양한 방법을 익혔습니다.
- 하나의 값 비교(=)
- 여러 값 비교(IN)
- 범위 비교(BETWEEN)
- 문자열 검색(LIKE)
이제는 검색한 데이터를 보기 좋게 가공하는 방법을 배울 차례입니다.
예를 들어 사장님이 이렇게 요청할 수 있습니다.
"고객 이름을 모두 대문자로 보여 주세요."
"상품 이름의 앞 5글자만 보여 주세요."
이처럼 문자열을 원하는 형태로 변환하거나 일부만 추출하는 기능이 바로 문자열 함수(String Functions)입니다.
다음 장에서는 다양한 문자열 함수를 이용하여 데이터를 더욱 유용하게 활용하는 방법을 배우겠습니다.
'프로그래밍 > MySQL' 카테고리의 다른 글
| 📊 [SQL 프로젝트] 제13장 숫자 함수(Numeric Functions) - 숫자를 계산하고 원하는 형태로 바꾸기 (0) | 2026.06.29 |
|---|---|
| 📊 [SQL 프로젝트] 제12장 문자열 함수(String Functions) - 글자를 원하는 형태로 바꾸기 (0) | 2026.06.29 |
| 📊 [SQL 프로젝트] 제9장 LIKE - 원하는 글자가 포함된 데이터 찾기 (0) | 2026.06.29 |
| 📊 [SQL 프로젝트] 제8장 DISTINCT - 중복된 데이터를 하나로 보기 (0) | 2026.06.29 |
| 📊 [SQL 프로젝트] 제7장 NULL - 값이 없는 데이터를 찾기 (0) | 2026.06.28 |