MySQL에서는 UPDATE 문 하나만으로 한 레코드의 여러 컬럼을 동시에 수정할 수 있습니다. 이 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 단일 쿼리로 여러 값을 업데이트하는 과정까지 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리는 자동 증가되는 기본키(Id)와 세 개의 점수 컬럼(Marks1, Marks2, Marks3)으로 구성된 테이블을 만듭니다.
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Marks1 int,
-> Marks2 int,
-> Marks3 int
-> );
Query OK, 0 rows affected (0.60 sec)2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(45,67,34); Query OK, 1 row affected (0.33 sec) mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(89,87,56); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(87,56,54); Query OK, 1 row affected (0.31 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------+--------+--------+ | Id | Marks1 | Marks2 | Marks3 | +----+--------+--------+--------+ | 1 | 45 | 67 | 34 | | 2 | 89 | 87 | 56 | | 3 | 87 | 56 | 54 | +----+--------+--------+--------+ 3 rows in set (0.00 sec)
4. 단일 쿼리로 여러 값 업데이트하기
이제 핵심인 UPDATE 문입니다. SET 절에 여러 컬럼과 새 값을 쉼표(,)로 구분하여 나열하면, WHERE 조건에 해당하는 레코드의 여러 필드를 한 번에 수정할 수 있습니다.
mysql> update DemoTable
-> set Marks1=98,Marks2=96,Marks3=99
-> where Id=1;
Query OK, 1 row affected (0.18 sec)
Rows matched: 1 Changed: 1 Warnings: 0위 쿼리는 Id가 1인 레코드의 Marks1, Marks2, Marks3 세 개 컬럼을 각각 98, 96, 99로 변경합니다. 실행 결과 메시지에서 'Rows matched: 1 Changed: 1'은 조건에 일치한 1개 행이 성공적으로 수정되었음을 의미합니다.
5. 업데이트 결과 검증하기
다시 SELECT 문을 실행해 변경 사항이 제대로 반영되었는지 확인합니다.
mysql> select *from DemoTable;
결과를 보면 Id가 1인 첫 번째 레코드의 세 컬럼 값이 모두 변경된 것을 확인할 수 있습니다.
+----+--------+--------+--------+ | Id | Marks1 | Marks2 | Marks3 | +----+--------+--------+--------+ | 1 | 98 | 96 | 99 | | 2 | 89 | 87 | 56 | | 3 | 87 | 56 | 54 | +----+--------+--------+--------+ 3 rows in set (0.00 sec)
정리 및 활용 팁
MySQL의 UPDATE 문은 SET 절에 쉼표로 구분된 여러 개의 '컬럼=값' 쌍을 지정함으로써 단일 쿼리로 여러 필드를 동시에 업데이트할 수 있습니다. 몇 가지 유용한 팁은 다음과 같습니다.
- WHERE 절 생략 주의: WHERE 조건을 지정하지 않으면 테이블의 모든 레코드가 수정되므로 반드시 조건을 확인하세요.
- 여러 레코드 동시 수정: WHERE 절의 조건을 넓히면(예: WHERE Id IN (1,2,3)) 여러 레코드도 한 번에 업데이트할 수 있습니다.
- CASE 문 활용: 레코드마다 서로 다른 값을 적용해야 한다면 CASE 표현식을 함께 사용하면 됩니다.