Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL WHERE 절로 특정 범위의 데이터 조회하는 방법 완벽 가이드

MySQL에서 특정 범위의 값을 선택하는 방법

MySQL 테이블에서 원하는 범위의 값을 조회하려면 WHERE 절을 사용하면 됩니다. WHERE 절에 비교 연산자(>=, <= 등)와 논리 연산자(AND)를 조합하면 여러 조건을 동시에 만족하는 레코드만 정확하게 추출할 수 있습니다.

이번 글에서는 실제 예제를 통해 고객 나이 범위와 정기 고객 여부를 함께 필터링하는 방법을 단계별로 살펴보겠습니다.

1단계: 테이블 생성하기

먼저 예제로 사용할 테이블을 생성합니다. 아래 쿼리는 고객 ID, 이름, 나이, 정기 고객 여부를 저장하는 테이블을 만듭니다.

mysql> create table DemoTable
(
    CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    CustomerName varchar(200),
    CustomerAge int,
    isRegularCustomer bool
);
Query OK, 0 rows affected (0.57 sec)

2단계: 샘플 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 테스트용 레코드를 추가합니다.

mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Chris',24,true);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Robert',26,false);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Mike',27,false);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Larry',22,true);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Sam',30,true);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Carol',26,true);
Query OK, 1 row affected (0.16 sec)

3단계: 전체 레코드 확인하기

SELECT 명령어로 테이블에 저장된 모든 데이터를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+------------+--------------+-------------+-------------------+
| CustomerId | CustomerName | CustomerAge | isRegularCustomer |
+------------+--------------+-------------+-------------------+
|          1 | Chris        |          24 |                 1 |
|          2 | Robert       |          26 |                 0 |
|          3 | Mike         |          27 |                 0 |
|          4 | Larry        |          22 |                 1 |
|          5 | Sam          |          30 |                 1 |
|          6 | Carol        |          26 |                 1 |
+------------+--------------+-------------+-------------------+
6 rows in set (0.00 sec)

4단계: WHERE 절로 특정 범위 조회하기

이제 핵심인 범위 조회 쿼리입니다. 아래 예제는 다음 두 조건을 동시에 만족하는 고객만 선택합니다.

  • 나이가 24 이상 27 이하인 고객
  • isRegularCustomer 컬럼 값이 1(true), 즉 정기 고객인 경우
mysql> select CustomerId,CustomerName,CustomerAge,isRegularCustomer from DemoTable
where isRegularCustomer=true AND CustomerAge >=24 AND CustomerAge <= 27;

실행 결과는 다음과 같습니다.

+------------+--------------+-------------+-------------------+
| CustomerId | CustomerName | CustomerAge | isRegularCustomer |
+------------+--------------+-------------+-------------------+
|          1 | Chris        |          24 |                 1 |
|          6 | Carol        |          26 |                 1 |
+------------+--------------+-------------+-------------------+
2 rows in set (0.00 sec)

BETWEEN 연산자를 활용한 대안

참고로 위 쿼리는 BETWEEN 연산자를 사용해 더 간결하게 작성할 수도 있습니다.

mysql> select CustomerId,CustomerName,CustomerAge,isRegularCustomer from DemoTable
where isRegularCustomer=true AND CustomerAge BETWEEN 24 AND 27;

BETWEEN은 시작값과 끝값을 모두 포함(이상, 이하)한다는 점에서 >=와 <= 조합과 동일한 결과를 반환합니다. 상황에 따라 가독성이 좋은 방식을 선택하면 됩니다.

마무리

이처럼 MySQL에서는 WHERE 절과 비교 연산자 또는 BETWEEN을 조합하여 손쉽게 특정 범위의 데이터를 조회할 수 있습니다. 여러 조건을 AND로 연결하면 복합적인 필터링도 가능하므로, 실무에서 데이터 추출 시 매우 유용하게 활용할 수 있습니다.