MySQL BETWEEN 연산자 사용 방법 (숫자, 날짜, 문자열 예시 포함)

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;

샘플 데이터:

직원_ID

name

급여

1

Sato

45000

2

Suzuki

55000

3

타카하시

75000

4

Tanaka

120000

결과:

employee_id

name

급여

2

Suzuki

55000

3

타카하시

75000

이 쿼리에서는 급여가 50,000에서 100,000 사이인 직원만 선택됩니다.

비교 연산자와 BETWEEN 비교

동일한 조건은 비교 연산자를 사용해 다음과 같이 표현할 수도 있습니다:

SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;

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을 사용하면 시작 날짜의 자정(00:00:00)부터 종료 날짜 다음 날의 자정까지의 값을 포함합니다. 전체 날을 포착하려면 시간 구성 요소를 명시적으로 지정하세요:

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

제품_이름

1

Apple

2

Banana

3

Mango

4

Orange

결과:

product_id

product_name

1

Apple

2

Banana

3

Mango

알파벳 순서 고려사항

BETWEEN으로 문자열을 필터링할 때, 평가가 알파벳 순서에 기반한다는 점을 유의하세요. 또한, 데이터베이스 콜레이션 설정에 따라 대소문자 구분이 적용될 수 있습니다. 예를 들어, 'a''A'가 다른 값으로 처리될 수 있습니다. 문자열 범위를 다룰 때는 항상 콜레이션 설정을 확인하세요.

6. 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;

이 쿼리는 가격이 1000에서 5000 사이이고, 재고 수량이 50에서 200 사이인 제품을 검색합니다.

NOT BETWEEN의 실용적인 사용

부정 형태인 NOT BETWEEN을 사용하면 특정 범위 밖의 데이터를 쉽게 추출할 수 있습니다. 예를 들어 급여가 50,000보다 적거나 100,000보다 큰 직원을 찾으려면 다음과 같이 작성할 수 있습니다:

SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;

Result:

employee_id

name

급여

1

Sato

45000

4

Tanaka

120000

이 쿼리는 급여가 50,000에서 100,000 사이에 포함되지 않는 직원을 검색합니다. NOT BETWEEN을 사용하면 반대 조건을 간단히 적용할 수 있습니다.

8. 쿼리 시각적 예시

쿼리 결과를 보다 직관적으로 만들기 위해 시각적 다이어그램이 도움이 될 수 있습니다. 예를 들어 BETWEEN의 효과를 다음과 같이 나타낼 수 있습니다:

Price Range: [----- 1000 ---- 5000 -----]
Product A Price: 3000 (Inside Range)
Product B Price: 6000 (Outside Range)

이러한 삽화는 값이 쿼리에서 지정한 범위에 포함되는지 이해하는 데 도움이 됩니다.

9. 요약

BETWEEN 연산자는 MySQL에서 범위 기반 검색을 수행하기 위한 강력한 도구입니다. 숫자, 날짜, 문자열 데이터에 모두 적용할 수 있어 간결하면서도 효율적인 쿼리를 작성할 수 있습니다. 그러나 경계값의 포함 여부와 적절한 인덱싱의 중요성과 같은 특성을 이해하는 것이 예기치 않은 결과를 방지하는 데 필수적입니다. 이러한 지식을 적용하면 쿼리 성능을 최적화하고 필요한 데이터만 보다 효과적으로 추출할 수 있습니다.

10. 참고 문헌

자세한 내용과 고급 사용 사례에 대해서는 공식 MySQL 문서나 전문 데이터베이스 서적을 참고하십시오. 또한 직접 쿼리를 실험해 보는 것이 BETWEEN 연산자의 작동 방식을 깊이 이해하는 가장 좋은 방법 중 하나입니다.