SQLite | 데이터 조회 | 지정된 값의 범위와 비교 (BETWEEN 절)

조건식을 작성할 때 BETWEEN 절을 사용하면, 컬럼의 값이 지정된 범위 내에 포함되어 있는지 대한 여부를 조건식으로 작성할 수 있다. 여기에서는 BETWEEN 절을 사용한 조건부 표현식에 대한 작성 방법을 설명한다.

조건식을 작성할 때 사용하는 WHERE 절에 대해서는 조회할 데이터의 조건 설정 (WHERE 절)를 참조한다.

BETWEEN 절을 사용한 조건식

BETWEEN 절을 사용하여 컬럽 값이 값1에서 값2의 사이에 포함되어 있는지 (값1과 값2에 동일한 경우도 포함)의 조건식을 작성할 수 있다. 형식은 다음과 같다.

SELECT 컬럼명, ... FROM 테이블명 WHERE 컬럼 BETWEEN 값1 AND 값2;

컬럼의 값이 값1과 값2 사이에 들어있는 데이터를 조회한다. 이 조건식은 비교 연산자와 논리 연산자를 사용하여 다음과 같이 작성했을 경우와 같다.

SELECT 컬럼명, ... FROM 테이블명 WHERE 컬럼 >= 값1 AND 컬럼 <= 값2;

그리고 NOT 연산자를 사용하여 지정한 범위에 포함되어 않는 데이터를 조회할 수도 있다.

SELECT 컬럼명, ... FROM 테이블명 WHERE 컬럼 NOT BETWEEN 값1 AND 값2;

이 경우는 컬럼의 값이 값1과 값2 사이에 포함되지 않은 경우 데이터를 받아온다..

그러면 실제로 해보도록 하겠다. 다음과 같이 테이블을 만든다.

create table user (name text, old integer, address text);
sqlite> create table user (name text, old integer, address text);
sqlite> 

INSERT 문을 사용하여 테이블에 데이터를 추가한다.

insert into user values ('devkuma', 39, 'Seoul');
insert into user values ('kimkc', 34, 'Busan');
insert into user values ('araikuma', 26, 'Seoul');
insert into user values ('happykuma', 19, 'Seoul');
insert into user values ('mykuma', 27, 'Daejeon');
insert into user values ('yourkuma', 28, 'Gwangju');
insert into user values ('raccoon', 31, 'Busan');
sqlite> insert into user values ('devkuma', 39, 'Seoul');
sqlite> insert into user values ('kimkc', 34, 'Busan');
sqlite> insert into user values ('araikuma', 26, 'Seoul');
sqlite> insert into user values ('happykuma', 19, 'Seoul');
sqlite> insert into user values ('mykuma', 27, 'Daejeon');
sqlite> insert into user values ('yourkuma', 28, 'Gwangju');
sqlite> insert into user values ('raccoon', 31, 'Busan');
sqlite> 

조회할 데이터의 조건을 지정하지 않고 데이터를 조회하는 경우는 다음과 같이 테이블에 포함된 모든 데이터를 받아온다.

select * from user;
sqlite> select * from user;
name        old         address   
----------  ----------  ----------
devkuma     39          Seoul     
kimkc       34          Busan     
araikuma    26          Seoul     
happykuma   19          Seoul     
mykuma      27          Daejeon   
yourkuma    28          Gwangju   
raccoon     31          Busan     
sqlite> 

그러면 BETWEEN 절을 사용하여 범위 지정을 해보자. 다음 예제에서는 old 컬럼의 값이 20 이상 30 이하의 데이터를 조회하고 있다.

select * from user where old between 20 and 30;
sqlite> select * from user where old between 20 and 30;
name        old         address   
----------  ----------  ----------
araikuma    26          Seoul     
mykuma      27          Daejeon   
yourkuma    28          Gwangju   
sqlite> 

다음은 NOT 연산자와 함께 old 컬럼의 값이 20 이상 30 이하가 아닌 데이터를 조회하고 있다.

select * from user where old not between 20 and 30;
sqlite> select * from user where old not between 20 and 30;
name        old         address   
----------  ----------  ----------
devkuma     39          Seoul     
kimkc       34          Busan     
happykuma   19          Seoul     
raccoon     31          Busan     
sqlite> 

위에 모두 조건식에 일치하는 데이터만 받아왔다.