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

MySQL 테이블 일괄 업데이트(Batch Update)하는 방법 총정리

MySQL에서는 UPDATE 문과 함께 시간 연산 함수인 ADDTIME()을 활용하면 여러 레코드를 한 번의 쿼리로 일괄 업데이트할 수 있습니다. 이번 글에서는 TIME 타입 컬럼의 모든 값을 특정 시간만큼 더해 일괄 수정하는 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제로 사용할 테이블을 생성합니다. 아래 예시에서는 아침 식사 시간을 저장하는 TIME 타입 컬럼을 만들었습니다.

mysql> create table DemoTable
-> (
-> BreakfastTime time
-> );
Query OK, 0 rows affected (0.59 sec)

2. 샘플 데이터 삽입하기

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

mysql> insert into DemoTable values('7:30:45');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('8:00:30');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('7:55:00');
Query OK, 1 row affected (0.10 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+---------------+
| BreakfastTime |
+---------------+
| 07:30:45 |
| 08:00:30 |
| 07:55:00 |
+---------------+
3 rows in set (0.00 sec)

4. 일괄 업데이트 쿼리 실행하기

이제 핵심 단계입니다. WHERE 절 없이 UPDATE 문을 실행하면 테이블의 모든 행이 한 번에 수정됩니다. 아래 쿼리는 ADDTIME() 함수를 사용해 모든 레코드의 시간에 2시간을 더합니다.

mysql> update DemoTable
-> set BreakfastTime=addtime(BreakfastTime,'2:00:00');
Query OK, 3 rows affected (0.13 sec)
Rows matched: 3 Changed: 3 Warnings: 0

실행 결과 'Rows matched: 3 Changed: 3' 메시지를 통해 전체 3개 행이 성공적으로 변경되었음을 확인할 수 있습니다.

5. 업데이트 결과 검증하기

변경된 값이 올바르게 적용되었는지 다시 한번 조회해 보겠습니다.

mysql> select * from DemoTable;

모든 시간 값에 2시간이 더해진 것을 확인할 수 있습니다.

+---------------+
| BreakfastTime |
+---------------+
| 09:30:45 |
| 10:00:30 |
| 09:55:00 |
+---------------+
3 rows in set (0.00 sec)

마무리 및 참고 사항

이처럼 MySQL에서는 UPDATE 문에 함수를 조합하면 복잡한 로직 없이도 테이블 전체 또는 특정 조건의 레코드를 손쉽게 일괄 수정할 수 있습니다. 몇 가지 유용한 팁을 정리하면 다음과 같습니다.

  • ADDTIME(): 시간(TIME) 또는 날짜+시간(DATETIME) 값에 지정한 시간을 더합니다.
  • SUBTIME(): 반대로 시간을 빼야 할 때 사용합니다.
  • WHERE 절 활용: 전체가 아닌 특정 조건의 행만 일괄 수정하려면 WHERE 절을 함께 사용하세요.

대량의 데이터를 다룰 때는 업데이트 전 반드시 SELECT 문으로 대상 레코드를 먼저 확인하고, 필요하다면 트랜잭션(START TRANSACTION / ROLLBACK)을 활용해 안전하게 작업하는 것이 좋습니다.