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

MySQL에서 특정 필드의 모든 항목을 일괄 변경하는 방법

MySQL에서는 UPDATE 문과 WHERE 절을 활용하면 특정 필드(컬럼)의 모든 항목을 한 번의 쿼리로 손쉽게 일괄 변경할 수 있습니다. 이번 글에서는 데모 테이블을 만들고, 실제 데이터를 삽입한 뒤 특정 필드의 전체 값을 일괄 수정하는 과정을 단계별로 살펴보겠습니다.

1. 데모 테이블 생성

먼저 예제에 사용할 데모 테이블을 생성합니다.

mysql> create table BulkChangeDemo
-> (
-> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CustomerName varchar(20),
-> isEducated boolean
-> );
Query OK, 0 rows affected (1.47 sec)

위 테이블은 고객 ID(CustomerId), 고객 이름(CustomerName), 교육 여부(isEducated) 세 개의 컬럼으로 구성되어 있습니다.

2. 테이블에 레코드 삽입

INSERT 명령어를 사용해 테이블에 샘플 데이터를 입력합니다.

mysql> insert into BulkChangeDemo(CustomerName,isEducated) values('Larry',true);
Query OK, 1 row affected (0.09 sec)
mysql> insert into BulkChangeDemo(CustomerName,isEducated) values('John',false);
Query OK, 1 row affected (0.16 sec)
mysql> insert into BulkChangeDemo(CustomerName,isEducated) values('Carol',false);
Query OK, 1 row affected (0.25 sec)
mysql> insert into BulkChangeDemo(CustomerName,isEducated) values('Mike',true);
Query OK, 1 row affected (0.18 sec)
mysql> insert into BulkChangeDemo(CustomerName,isEducated) values('David',false);
Query OK, 1 row affected (0.13 sec)
mysql> insert into BulkChangeDemo(CustomerName,isEducated) values('Bob',false);
Query OK, 1 row affected (0.10 sec)

3. 현재 저장된 데이터 확인

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from BulkChangeDemo;

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

+------------+--------------+------------+
| CustomerId | CustomerName | isEducated |
+------------+--------------+------------+
| 1 | Larry | 1 |
| 2 | John | 0 |
| 3 | Carol | 0 |
| 4 | Mike | 1 |
| 5 | David | 0 |
| 6 | Bob | 0 |
+------------+--------------+------------+
6 rows in set (0.00 sec)

현재 6명의 고객 중 4명(Larry 제외 John, Carol, David, Bob)은 isEducated 값이 0(false)입니다.

4. 특정 필드의 모든 항목 일괄 변경

특정 필드의 전체 항목을 일괄 변경하려면 WHERE 조건 없이 UPDATE 문을 실행하면 됩니다. 아래 쿼리는 isEducated 필드의 모든 값을 true로 변경합니다.

mysql> update BulkChangeDemo set isEducated =true;
Query OK, 4 rows affected (0.18 sec)
Rows matched: 6 Changed: 4 Warnings: 0

실행 결과를 보면 총 6개 행이 매칭되었고, 그중 실제로 값이 변경된 행은 4개입니다. 이미 true였던 Larry와 Mike의 값은 변하지 않았기 때문에 MySQL은 변경된 행 수만큼만 'Changed'로 표시합니다.

변경 결과 확인

다시 SELECT 문으로 데이터를 조회하면 모든 고객의 isEducated 값이 1(true)로 변경된 것을 확인할 수 있습니다.

mysql> select *from BulkChangeDemo;

핵심 정리

  • WHERE 절 없이 UPDATE 테이블명 SET 컬럼명 = 값; 형태로 작성하면 해당 컬럼의 모든 행이 일괄 변경됩니다.
  • 일부 행만 변경하고 싶다면 반드시 WHERE 절을 추가해야 의도치 않은 대량 수정을 방지할 수 있습니다.
  • 대용량 테이블에서는 UPDATE 실행 전 백업을 권장하며, 트랜잭션(BEGIN/COMMIT)을 활용하면 안전하게 작업할 수 있습니다.