MySQL에서는 UPDATE 문과 WHERE 절을 함께 사용하면 전체 행이 아닌 특정 열의 값만 선택적으로 수정할 수 있습니다. 이 글에서는 예제를 통해 하나의 열 값만 업데이트하는 방법을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable770 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value int ); Query OK, 0 rows affected (0.65 sec)
AUTO_INCREMENT로 설정된 Id 열과, 실제 값을 저장할 Value 열로 구성된 간단한 테이블입니다.
2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable770(Value) values(10); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable770(Value) values(90); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable770(Value) values(160); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable770(Value) values(450); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable770(Value) values(560); Query OK, 1 row affected (0.21 sec)
3. 현재 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable770;
실행 결과는 다음과 같습니다.
+----+-------+ | Id | Value | +----+-------+ | 1 | 10 | | 2 | 90 | | 3 | 160 | | 4 | 450 | | 5 | 560 | +----+-------+ 5 rows in set (0.00 sec)
4. 단일 열 값 업데이트하기
이제 특정 조건에 해당하는 행의 한 열 값만 수정하는 쿼리를 실행합니다. WHERE 절로 Id가 4인 행을 지정하고, 해당 행의 Value 값을 기존 값보다 150 증가시킵니다.
mysql> update DemoTable770 set Value=Value+150 where Id=4; Query OK, 1 row affected (0.52 sec) Rows matched: 1 Changed: 1 Warnings: 0
여기서 핵심은 set Value=Value+150처럼 열 자신의 현재 값을 참조하여 새로운 값을 계산할 수 있다는 점입니다. 또한 WHERE 절을 생략하면 테이블의 모든 행이 변경되므로, 특정 행만 수정하려면 반드시 조건을 지정해야 합니다.
5. 업데이트 결과 확인하기
다시 SELECT 문을 실행하여 변경 사항을 확인합니다.
mysql> select *from DemoTable770;
실행 결과는 다음과 같습니다.
+----+-------+ | Id | Value | +----+-------+ | 1 | 10 | | 2 | 90 | | 3 | 160 | | 4 | 600 | | 5 | 560 | +----+-------+ 5 rows in set (0.00 sec)
Id가 4인 행의 Value 값이 450에서 600으로 정확히 150 증가한 것을 확인할 수 있으며, 나머지 행은 그대로 유지되었습니다. 이처럼 UPDATE 문에 적절한 WHERE 조건을 사용하면 원하는 열의 값만 안전하게 수정할 수 있습니다.