MySQL에서 여러 열(column)의 값을 하나의 쿼리로 동시에 수정해야 할 때가 있습니다. 이럴 때는 UPDATE 문과 REPLACE() 함수를 함께 사용하면 됩니다. REPLACE() 함수는 특정 문자열을 찾아 다른 문자열로 치환해 주는 역할을 하며, UPDATE 문의 SET 절에서 여러 열을 쉼표로 구분하여 지정하면 한 번의 실행으로 모든 열을 갱신할 수 있습니다.
실제 예제를 통해 살펴보겠습니다. 먼저 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(100),
-> StudentCountryName varchar(100)
-> );
Query OK, 0 rows affected (0.67 sec)
1. 데이터 삽입하기
INSERT 명령을 사용해 테이블에 샘플 레코드를 추가합니다.
mysql> insert into DemoTable(StudentName,StudentCountryName) values('John','US');
Query OK, 1 row affected (0.15 sec)2. 현재 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+-----------+-------------+--------------------+
| StudentId | StudentName | StudentCountryName |
+-----------+-------------+--------------------+
| 1 | John | US |
+-----------+-------------+--------------------+
1 row in set (0.00 sec)
3. 여러 열을 한 번에 업데이트하기
다음은 단일 쿼리로 두 개의 열을 동시에 수정하는 방법입니다. SET 절에서 각 열의 값을 REPLACE() 함수를 이용해 치환하고, 쉼표(,)로 구분하여 나열합니다.
mysql> update DemoTable
-> set StudentName=replace(StudentName,'John','Chris'),
-> StudentCountryName=replace(StudentCountryName,'US','UK');
Query OK, 1 row affected (0.69 sec)
Rows matched: 1 Changed: 1 Warnings: 0
4. 변경 결과 확인하기
업데이트가 정상적으로 적용되었는지 테이블을 다시 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+-----------+-------------+--------------------+
| StudentId | StudentName | StudentCountryName |
+-----------+-------------+--------------------+
| 1 | Chris | UK |
+-----------+-------------+--------------------+
1 row in set (0.00 sec)
실행 결과를 보면 StudentName 열의 'John'이 'Chris'로, StudentCountryName 열의 'US'가 'UK'로 한 번의 쿼리 실행만으로 동시에 변경된 것을 확인할 수 있습니다.
핵심 정리
- UPDATE 문의 SET 절에서 여러 열을 쉼표로 구분하면 단일 쿼리로 여러 열을 수정할 수 있습니다.
- REPLACE(열이름, '기존값', '새값') 형태로 작성하면 해당 열에서 일치하는 문자열을 찾아 자동으로 치환합니다.
- WHERE 절을 추가하면 특정 조건에 맞는 행만 선택적으로 업데이트할 수 있으므로, 실무에서는 WHERE 절 사용을 권장합니다.