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

MySQL에서 BETWEEN 절로 특정 범위의 레코드를 업데이트하는 방법

MySQL에서 여러 레코드를 한 번에 업데이트하려면 UPDATE 문과 함께 BETWEEN 연산자를 활용하면 됩니다. BETWEEN은 지정한 두 값 사이(경계값 포함)의 범위를 조건으로 처리해 주기 때문에, 연속된 ID나 날짜 등의 범위를 다룰 때 매우 유용합니다.

1. 예제 테이블 생성하기

먼저 실습에 사용할 테이블을 생성합니다:

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(20),
    Age int
);
Query OK, 0 rows affected (0.53 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다:

mysql> insert into DemoTable(Name,Age) values('Larry',23);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Name,Age) values('Sam',24);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(Name,Age) values('Chris',21);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name,Age) values('Carol',25);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name,Age) values('David',22);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name,Age) values('Robert',26);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name,Age) values('John',20);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name,Age) values('Mike',27);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Name,Age) values('Johnny',28);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Name,Age) values('James',23);
Query OK, 1 row affected (0.23 sec)

3. 현재 데이터 확인하기

SELECT 명령으로 테이블에 저장된 전체 레코드를 조회해 보겠습니다:

mysql> select *from DemoTable;

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

+----+--------+------+
| Id | Name   | Age  |
+----+--------+------+
|  1 | Larry  | 23   |
|  2 | Sam    | 24   |
|  3 | Chris  | 21   |
|  4 | Carol  | 25   |
|  5 | David  | 22   |
|  6 | Robert | 26   |
|  7 | John   | 20   |
|  8 | Mike   | 27   |
|  9 | Johnny | 28   |
| 10 | James  | 23   |
+----+--------+------+
10 rows in set (0.00 sec)

4. BETWEEN으로 레코드 범위 업데이트하기

이제 BETWEEN 절을 사용해 특정 범위의 레코드를 업데이트해 보겠습니다. 아래 쿼리는 ID가 5부터 10 사이인 레코드의 Name을 'Bob'으로, Age를 23으로 변경합니다:

mysql> update DemoTable set Name='Bob', Age=23 where Id between 5 AND 10;
Query OK, 6 rows affected (0.25 sec)
Rows matched: 6 Changed: 6 Warnings: 0

실행 결과를 보면 총 6개의 행이 일치하고 변경되었음을 확인할 수 있습니다. BETWEEN은 시작값과 끝값을 모두 포함하므로, ID 5와 10인 레코드도 함께 업데이트됩니다.

참고: BETWEEN 대신 비교 연산자 사용하기

BETWEEN 대신 AND 연산자와 비교 연산자를 조합해도 동일한 결과를 얻을 수 있습니다:

mysql> update DemoTable set Name='Bob', Age=23 where Id >= 5 AND Id <= 10;

5. 업데이트 결과 확인하기

변경된 데이터가 제대로 반영되었는지 다시 전체 레코드를 조회해 보겠습니다:

mysql> select *from DemoTable;

출력 결과는 다음과 같습니다:

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  1 | Larry | 23   |
|  2 | Sam   | 24   |
|  3 | Chris | 21   |
|  4 | Carol | 25   |
|  5 | Bob   | 23   |
|  6 | Bob   | 23   |
|  7 | Bob   | 23   |
|  8 | Bob   | 23   |
|  9 | Bob   | 23   |
| 10 | Bob   | 23   |
+----+-------+------+
10 rows in set (0.00 sec)

결과를 확인해 보면 ID 5~10에 해당하는 6개 레코드의 이름이 'Bob'으로, 나이가 23으로 성공적으로 변경된 것을 알 수 있습니다. 이처럼 UPDATE 문과 WHERE 절의 BETWEEN을 조합하면 원하는 범위의 레코드를 간편하게 일괄 수정할 수 있습니다.