코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

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 연산자는 데이터베이스에서 날짜나 숫자 범위를 필터링할 때 매우 유용하며, 다양한 데이터 유형에 걸쳐 강력한 쿼리 작성을 지원합니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com