0Pricing
SQL Academy · 강의

범위를 위한 BETWEEN

포함 범위인 숫자 및 날짜 범위에 BETWEEN을 사용하고, 반개구간에는 명시적인 >= 및 < 비교를 우선해야 하는 경우를 알아봅니다.

범위를 위한 BETWEEN은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

BETWEEN은 양 끝값을 포함합니다

BETWEEN a AND b는 x >= a AND x <= b인 값을 일치시킵니다. 양쪽 끝점이 모두 포함됩니다.

SELECT * FROM orders WHERE total BETWEEN 100 AND 500;
-- equivalent to:
SELECT * FROM orders WHERE total >= 100 AND total <= 500;

날짜 범위

BETWEEN은 날짜와 타임스탬프에도 사용할 수 있습니다:

SELECT * FROM orders
WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';

포함되는 끝점의 함정

TIMESTAMP 열에 BETWEEN '2024-12-31'을 사용하면 31일의 자정에 끝나며, 하루의 마지막 시각까지 포함하지 않습니다. 12월 31일 14:00에 생성된 주문은 제외됩니다.

-- WRONG — misses orders later on Dec 31:
WHERE created_at BETWEEN '2024-12-01' AND '2024-12-31';

-- RIGHT — half-open interval:
WHERE created_at >= '2024-12-01'
  AND created_at <  '2025-01-01';

시간에는 반개구간을 사용하십시오

반개구간 패턴인 >= 시작 AND < 다음_기간은 모호하지 않고 모든 세분화 수준에서 작동하며 연속된 기간에도 자연스럽게 연결됩니다.

WHERE created_at >= date_trunc('month', NOW())
  AND created_at <  date_trunc('month', NOW()) + INTERVAL '1 month';

NOT BETWEEN

BETWEEN의 반대이며 범위를 제외합니다:

SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
-- equivalent to: price < 10 OR price > 20

범위 쿼리와 인덱스

B-트리 인덱스는 범위 쿼리에 도움이 됩니다. 복합 인덱스에서는 선택도를 높이기 위해 범위 열을 마지막에 배치합니다:

CREATE INDEX orders_user_total_idx ON orders (user_id, total);

-- Efficient: equality on user_id, range on total
SELECT * FROM orders
WHERE user_id = 42 AND total BETWEEN 100 AND 500;

문자열과 BETWEEN

BETWEEN은 문자열을 사전순으로 비교합니다. 대소문자에 주의하십시오:

SELECT * FROM users WHERE last_name BETWEEN 'A' AND 'C';
-- Includes 'Adams' and 'Bond', excludes 'C' itself only if 'C' < 'Ca...'

범위 형식(PostgreSQL)

PostgreSQL에는 반개구간을 위한 전용 범위 형식이 있습니다:

SELECT int4range(10, 20) @> 15;       -- true  (15 in [10,20))
SELECT tsrange('2024-01-01', '2025-01-01') @> NOW()::TIMESTAMP;

CHECK로 범위 검증하기

삽입 시 시작 <= 종료인지 확인하십시오:

CREATE TABLE bookings (
  id BIGSERIAL PRIMARY KEY,
  start_at TIMESTAMPTZ NOT NULL,
  end_at   TIMESTAMPTZ NOT NULL,
  CHECK (start_at < end_at)
);

숫자 구간화

BETWEEN을 CASE와 결합하여 구간을 만들 수 있습니다:

SELECT id, total,
  CASE
    WHEN total BETWEEN 0 AND 99    THEN 'small'
    WHEN total BETWEEN 100 AND 999 THEN 'medium'
    ELSE 'large'
  END AS bucket
FROM orders;

BETWEEN SYMMETRIC

어느 쪽이 더 작은지와 관계없이 작동하는 SQL 표준 확장입니다:

SELECT 5 BETWEEN SYMMETRIC 10 AND 1;   -- TRUE

복습

BETWEEN은 양 끝값을 포함하는 범위를 간편하게 표현하는 방법입니다.

  • 타임스탬프 끝점에 주의하고 반개구간 >= start AND < end를 선호
  • 복합 인덱스는 범위 쿼리를 빠르게 함
  • CHECK 제약 조건은 유효한 범위를 보장함

빠른 확인

표준 SQL에서 BETWEEN a AND b의 양쪽 끝점은 모두 포함됩니까?

자주 묻는 질문

“범위를 위한 BETWEEN” 강의는 무료인가요?

네 — “범위를 위한 BETWEEN” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“범위를 위한 BETWEEN”에서 뭘 배우나요?

포함 범위인 숫자 및 날짜 범위에 BETWEEN을 사용하고, 반개구간에는 명시적인 >= 및 < 비교를 우선해야 하는 경우를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

SQL Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“범위를 위한 BETWEEN” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. LIKE 패턴과 와일드카드
  2. 집합을 위한 IN과 NOT IN
  3. 범위를 위한 BETWEEN
  4. IS NULL, IS NOT NULL과 COALESCE
← SQL Academy(으)로 돌아가기