1. 소개
MySQL 데이터베이스에서 쿼리를 효율적으로 실행하는 중요한 요소 중 하나는 BETWEEN 연산자입니다. 이 연산자는 데이터가 특정 범위 내에 있는지 확인할 때 매우 유용합니다. 숫자, 날짜, 문자열에 대한 범위를 지정하는 데 사용되며, 데이터베이스 검색 및 필터링에서 효율적인 데이터 추출을 가능하게 합니다. 이 기사에서는 MySQL BETWEEN 연산자의 사용 방법, 실전 예제, 그리고 중요한 고려 사항을 자세히 설명하겠습니다.
2. BETWEEN 연산자의 기본 구문
BETWEEN 연산자 개요
BETWEEN 연산자는 WHERE 절에서 사용되는 조건으로, 특정 열 값이 정의된 범위 내에 있는지 확인합니다. 기본 구문은 다음과 같습니다:
SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;
예를 들어, 테이블에 직원 연령이 저장되어 있다면 이 연산자를 사용하여 특정 연령 범위 내의 직원을 추출할 수 있습니다.
부정 형태: NOT BETWEEN
지정된 범위에 포함되지 않는 값을 검색하려면 부정 형태인 NOT BETWEEN을 사용합니다.
SELECT column_name
FROM table_name
WHERE column_name NOT BETWEEN start_value AND end_value;
3. 숫자 범위 지정
숫자 범위에 BETWEEN 사용
BETWEEN 연산자는 숫자 범위를 지정하는 데 매우 편리합니다. 예를 들어, 직원 급여가 50,000에서 100,000 사이인 데이터를 추출하려면 쿼리를 다음과 같이 작성합니다:
SELECT employee_id, name, salary
FROM employees
WHERE salary BETWEEN 50000 AND 100000;
샘플 데이터:
| employee_id | name | salary |
|---|---|---|
| 1 | Sato | 45000 |
| 2 | Suzuki | 55000 |
| 3 | Takahashi | 75000 |
| 4 | Tanaka | 120000 |
실행 결과:
| employee_id | name | salary |
|---|---|---|
| 2 | Suzuki | 55000 |
| 3 | Takahashi | 75000 |
위 쿼리에서 급여가 50,000에서 100,000 사이인 직원만 선택됩니다.
비교 연산자와의 차이
동일한 조건을 비교 연산자로 표현하면 다음과 같습니다:
SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;
BETWEEN을 사용하면 쿼리가 더 간결해지고 가독성이 향상됩니다. 특히 여러 범위 조건이 포함된 경우 BETWEEN은 쿼리를 더 쉽게 이해할 수 있게 합니다.

4. 날짜 범위 지정
날짜 데이터와 BETWEEN 사용
BETWEEN은 날짜 범위를 지정하는 데도 사용할 수 있습니다. 예를 들어, 주문 테이블에서 2024년 1월 1일부터 2024년 12월 31일 사이의 주문을 추출하려면 쿼리를 다음과 같이 작성합니다:
SELECT order_id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
샘플 데이터:
| order_id | customer_id | order_date |
|---|---|---|
| 1 | 101 | 2024-01-15 |
| 2 | 102 | 2024-05-30 |
| 3 | 103 | 2025-03-01 |
실행 결과:
| order_id | customer_id | order_date |
|---|---|---|
| 1 | 101 | 2024-01-15 |
| 2 | 102 | 2024-05-30 |
위와 같이 BETWEEN 연산자는 지정된 날짜 범위 내의 데이터를 추출합니다.
시간 데이터 처리
날짜 데이터에 시간이 포함된 경우 특별한 주의가 필요합니다. 예를 들어, order_date 열이 DATETIME 타입이고 시간 값이 포함되어 있다면, BETWEEN으로 범위를 지정할 때 시작 날짜의 자정부터 종료 날짜의 23:59:59까지의 레코드가 포함됩니다.
WHERE order_date BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59';
5. 문자열 범위 지정
문자열 데이터와 BETWEEN 사용
BETWEEN 연산자는 문자열 데이터에도 적용할 수 있습니다. 예를 들어, 제품 이름이 ‘A’에서 ‘M’ 사이인 제품을 검색하려면 쿼리를 다음과 같이 작성합니다:
SELECT product_id, product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'M';
샘플 데이터:
| product_id | product_name |
|---|---|
| 1 | Apple |
| 2 | Banana |
| 3 | Mango |
| 4 | Orange |
실행 결과:
| product_id | product_name |
|---|---|
| 1 | Apple |
| 2 | Banana |
| 3 | Mango |
알파벳 순서 고려 사항
문자열 범위를 지정할 때는 문자열이 알파벳 순서로 정렬된다고 가정합니다. 데이터베이스의 콜레이션 설정에 따라 대문자와 소문자를 구분할 수 있으므로 주의가 필요합니다. 예를 들어, 'a'와 'A'가 서로 다른 값으로 처리될 수 있습니다.
6. BETWEEN 사용 시 중요한 고려 사항
범위 순서의 중요성
BETWEEN 연산자를 사용할 때 시작 값과 끝 값의 순서를 주의해야 합니다. 시작 값이 끝 값보다 크면 쿼리가 의도하지 않은 결과를 반환할 수 있습니다.
SELECT * FROM table_name WHERE column_name BETWEEN 100 AND 50; -- unintended result
또한, BETWEEN은 경계 값을 모두 포함하므로 시작 값과 끝 값을 신중하게 선택하는 것이 중요합니다.
인덱스 사용 및 효율성
BETWEEN 연산자는 일반적으로 표준 비교 연산자와 비슷한 성능을 보입니다. 그러나 쿼리 성능을 최적화하려면 적절한 인덱싱이 필수적입니다. 인덱스가 올바르게 구성되면 BETWEEN 연산자를 사용한 쿼리 실행 속도가 향상됩니다. 예를 들어, 날짜 열에 인덱스를 설정하면 날짜 범위 쿼리가 더 효율적으로 실행됩니다.
7. 실전 쿼리 및 고급 예제
여러 열과 함께 BETWEEN 사용
BETWEEN 연산자는 여러 열에 걸쳐 조합하여 사용할 수도 있습니다. 예를 들어, 제품 가격과 재고 수량을 모두 지정하여 범위 검색을 수행할 때 다음 쿼리를 사용할 수 있습니다:
SELECT product_name, price, stock
FROM products
WHERE price BETWEEN 1000 AND 5000
AND stock BETWEEN 50 AND 200;
이 쿼리는 가격이 1,000에서 5,000 사이이고 재고 수량이 50에서 200 사이인 제품을 검색합니다.
NOT BETWEEN 고급 예제
부정 형태인 NOT BETWEEN을 사용하면 지정된 범위 밖의 데이터를 추출할 수 있습니다. 예를 들어, 급여가 50,000 미만이거나 100,000 초과인 직원을 검색하려면 쿼리를 다음과 같이 작성합니다:
SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;
실행 결과:
| employee_id | name | salary |
|---|---|---|
| 1 | Sato | 45000 |
| 4 | Tanaka | 120000 |
이 쿼리는 급여가 50,000에서 100,000 범위에 속하지 않는 직원을 검색합니다. NOT BETWEEN을 사용하면 역 조건에 기반한 데이터를 쉽게 추출할 수 있습니다.
8. 시각적 쿼리 예제
쿼리 결과를 시각적으로 설명하기 위해 간단한 다이어그램을 사용하는 것이 효과적입니다. 예를 들어, 다음 일러스트레이션은 BETWEEN이 작동하는 방식을 설명합니다:
Price range: [----- 1000 ---- 5000 -----]
Product A price: 3000 (within range)
Product B price: 6000 (outside range)
이러한 다이어그램을 사용하면 데이터가 지정된 쿼리 범위 내에 속하는지 직관적으로 이해하기 쉽습니다.
9. 요약
BETWEEN 연산자는 MySQL에서 범위 기반 검색을 수행할 때 매우 유용한 도구입니다. 숫자, 날짜, 문자열 데이터에 적용할 수 있으며, 쿼리를 간결하고 효율적으로 작성할 수 있게 합니다. 그러나 경계 값 포함과 적절한 인덱스 사용과 같은 주요 고려 사항을 이해하는 것이 중요합니다. 이 지식을 활용하면 데이터베이스 쿼리 성능을 최적화하고 필요한 데이터를 효율적으로 추출할 수 있습니다.
10. 참고 자료
더 자세한 내용과 추가 사용 예제는 공식 MySQL 문서와 전문 데이터베이스 교과서를 참조하세요. 쿼리를 직접 연습하면 BETWEEN 연산자에 대한 이해를 더욱 깊게 할 수 있습니다.


