SQL Between
SQL BETWEEN: 값의 범위 내 데이터 검색
SQL BETWEEN 연산자는 WHERE 절에서 사용되며, 특정 열의 값이 두 값 사이에 있는지 확인할 때 사용됩니다. BETWEEN 연산자는 시작값과 끝값을 포함하여 범위 내의 데이터를 선택합니다. 이 연산자는 숫자, 날짜, 문자 데이터 유형에 모두 사용할 수 있으며, 데이터를 쉽게 범위로 필터링할 수 있는 강력한 도구입니다.
1. 기본 BETWEEN 문법
BETWEEN 연산자의 기본 문법은 다음과 같습니다:
SELECT 열이름
FROM 테이블이름
WHERE 열이름 BETWEEN 시작값 AND 끝값;
- 열이름: 범위를 확인할 열(column)입니다.
- 시작값: 범위의 시작 값.
- 끝값: 범위의 끝 값.
2. SQL BETWEEN 예제
2.1 숫자 데이터에서 범위 선택
다음은 employees
테이블에서 급여가 3000에서 6000 사이인 직원을 검색하는 예제입니다.
SELECT name, salary
FROM employees
WHERE salary BETWEEN 3000 AND 6000;
이 쿼리는 급여가 3000 이상 6000 이하인 직원을 반환합니다.
결과 예시:
name | salary |
---|---|
John | 4000 |
Jane | 5000 |
Alice | 6000 |
2.2 날짜 데이터에서 범위 선택
다음은 orders
테이블에서 2023년 1월 1일부터 2023년 12월 31일 사이에 발생한 주문을 검색하는 예제입니다.
SELECT order_id, order_date
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';
이 쿼리는 2023년 내에 발생한 주문을 반환합니다.
결과 예시:
order_id | order_date |
---|---|
101 | 2023-05-12 |
102 | 2023-08-21 |
103 | 2023-11-30 |
2.3 문자 데이터에서 범위 선택
BETWEEN 연산자는 문자 데이터에서도 사용할 수 있습니다. 다음은 products
테이블에서 이름이 'A'에서
'L' 사이에 해당하는 제품을 검색하는 예제입니다.
SELECT product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'L';
이 쿼리는 알파벳 순으로 'A'에서 'L' 사이에 있는 제품명을 반환합니다.
결과 예시:
product_name
Apple
Banana
Lemon
3. BETWEEN 연산자와 NOT 결합
NOT BETWEEN 연산자를 사용하면, 값이 특정 범위에 포함되지 않는 데이터를 검색할 수 있습니다.
예제: 급여가 3000에서 6000 사이가 아닌 직원 찾기
SELECT name, salary
FROM employees
WHERE salary NOT BETWEEN 3000 AND 6000;
이 쿼리는 급여가 3000에서 6000 사이가 아닌 직원을 반환합니다.
결과 예시:
name | salary |
---|---|
Bob | 2500 |
Charlie | 7000 |
4. BETWEEN 연산자와 대소문자 비교
SQL에서 BETWEEN 연산자는 문자열 데이터 비교 시 대소문자를 구분하지 않습니다(대부분의 SQL 구현에서). 즉, 알파벳 범위를 사용할 때는 대소문자 차이가 없습니다.
예제: 대소문자 구분 없이 문자 범위 검색
SELECT product_name
FROM products
WHERE product_name BETWEEN 'a' AND 'l';
이 쿼리는 대소문자 구분 없이 'A'에서 'L' 사이의 제품명을 반환합니다.
5. BETWEEN의 범위 포함
BETWEEN 연산자는 경계값을 포함합니다. 즉, 범위의 시작값과 끝값도 결과에 포함됩니다.
예제: 경계값 포함
SELECT name, salary
FROM employees
WHERE salary BETWEEN 4000 AND 6000;
이 쿼리는 급여가 4000 또는 6000인 직원도 결과에 포함됩니다.
결과 예시:
name | salary |
---|---|
John | 4000 |
Alice | 6000 |
6. BETWEEN과 날짜 데이터
BETWEEN 연산자는 날짜 데이터에서 자주 사용됩니다. 특정 날짜 범위 내에 발생한 데이터, 주문, 트랜잭션 등을 쉽게 필터링할 수 있습니다.
예제: 지난 1년 동안의 데이터 검색
SELECT order_id, order_date
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';
이 쿼리는 2023년 동안 발생한 주문을 반환합니다.
결과 예시:
order_id | order_date |
---|---|
201 | 2023-03-15 |
202 | 2023-10-22 |
7. 실전 예제
예제 1: 급여가 5000에서 10000 사이인 직원 조회
SELECT name, salary
FROM employees
WHERE salary BETWEEN 5000 AND 10000;
이 쿼리는 급여가 5000에서 10000 사이인 직원을 반환합니다.
예제 2: 특정 날짜 범위 내 주문 조회
SELECT order_id, order_date
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-06-30';
이 쿼리는 2023년 상반기에 발생한 주문을 반환합니다.
예제 3: 알파벳 순으로 'M'에서 'Z' 사이에 있는 제품 조회
SELECT product_name
FROM products
WHERE product_name BETWEEN 'M' AND 'Z';
이 쿼리는 'M'에서 'Z' 사이에 있는 제품명을 반환합니다.
8. BETWEEN과 NULL 값 처리
BETWEEN 연산자는 NULL 값을 비교할 때 주의가 필요합니다. NULL 값은 BETWEEN 연산에서 무시되며, NULL 값 자체는 범위 비교에 포함되지 않습니다.
예제: NULL 값 확인
SELECT name, salary
FROM employees
WHERE salary BETWEEN 3000 AND 6000 OR salary IS NULL;
이 쿼리는 급여가 3000에서 6000 사이이거나 NULL인 직원을 반환합니다.
9. BETWEEN과 정렬된 결과
BETWEEN은 결과를 필터링할 뿐이며, 데이터의 정렬 순서는 영향을 받지 않습니다. 데이터가 특정 순서로 정렬되어야 한다면 ORDER BY 절을 함께 사용해야 합니다.
예제: 범위 내 급여를 기준으로 정렬
SELECT name, salary
FROM employees
WHERE salary BETWEEN 3000 AND 6000
ORDER BY salary ASC;
이 쿼리는 급여가 3000에서 6000 사이인 직원을 급여 순으로 오름차순 정렬하여 반환합니다.
10. 요약
SQL BETWEEN 연산자는 값이 특정 범위 내에 있는 데이터를 검색할 때 사용됩니다. 숫자, 날짜, 문자 데이터 유형에 모두 사용할 수 있으며, 범위의 경계값을 포함합니다. NOT BETWEEN을 사용하면 특정 범위에 속하지 않는 데이터를 찾을 수 있습니다. BETWEEN 연산자는 데이터베이스에서 날짜나 숫자 범위를 필터링할 때 매우 유용하며, 다양한 데이터 유형에 걸쳐 강력한 쿼리 작성을 지원합니다.