MySQL에서는 UPDATE 문과 SET 명령어를 사용하면 기존 값에 원하는 값을 손쉽게 더할 수 있습니다. 예를 들어 게임 점수에 보너스 점수를 추가하거나, 재고 수량을 늘리는 작업을 하나의 쿼리로 처리할 수 있습니다.
기본 문법
기존 컬럼 값에 정수를 더하는 기본적인 UPDATE 문법은 다음과 같습니다.
UPDATE yourTableName SET yourColumnName = yourColumnName + integerValueToAdd WHERE yourCondition;
여기서 핵심은 SET yourColumnName = yourColumnName + 추가할값 부분입니다. 현재 저장된 값을 그대로 참조하여 연산한 결과를 다시 할당하는 방식입니다. WHERE 절을 생략하면 테이블의 모든 행이 업데이트되므로 주의해야 합니다.
예제 테이블 생성하기
문법을 실제로 이해하기 위해 간단한 예제 테이블을 만들어 보겠습니다.
mysql> create table addingValueToExisting
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(30),
-> GameScore int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.58 sec)위 테이블은 자동 증가되는 Id, 플레이어 이름(Name), 게임 점수(GameScore) 세 개의 컬럼으로 구성되어 있습니다.
샘플 데이터 삽입하기
INSERT 명령어를 사용해 여러 플레이어의 점수를 입력합니다.
mysql> insert into addingValueToExisting(Name,GameScore) values('John',89);
Query OK, 1 row affected (0.11 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('Mike',56);
Query OK, 1 row affected (0.28 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('Sam',99);
Query OK, 1 row affected (0.18 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('Carol',100);
Query OK, 1 row affected (0.17 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('David',67);
Query OK, 1 row affected (0.25 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('Bob',78);
Query OK, 1 row affected (0.14 sec)저장된 데이터 확인하기
SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> select *from addingValueToExisting;
실행 결과는 다음과 같습니다.
+----+-------+-----------+ | Id | Name | GameScore | +----+-------+-----------+ | 1 | John | 89 | | 2 | Mike | 56 | | 3 | Sam | 99 | | 4 | Carol | 100 | | 5 | David | 67 | | 6 | Bob | 78 | +----+-------+-----------+ 6 rows in set (0.00 sec)
기존 값에 값 더해서 업데이트하기
이제 실제 업데이트를 진행해 보겠습니다. 예제로 Id가 4인 Carol의 점수(현재 100점)에 10점을 더해 110점으로 만들어 보겠습니다.
mysql> update addingValueToExisting set GameScore = GameScore+10 where Id = 4; Query OK, 1 row affected (0.23 sec) Rows matched - 1 Changed - 1 Warnings - 0
쿼리 실행 결과 1개의 행이 성공적으로 변경되었습니다.
업데이트 결과 검증하기
해당 레코드가 제대로 수정되었는지 다시 조회해 확인합니다.
mysql> select *from addingValueToExisting where Id = 4;
실행 결과는 다음과 같습니다.
+----+-------+-----------+ | Id | Name | GameScore | +----+-------+-----------+ | 4 | Carol | 110 | +----+-------+-----------+ 1 row in set (0.00 sec)
출력 결과를 보면 Carol의 GameScore가 기존 100에서 10이 더해진 110으로 변경된 것을 확인할 수 있습니다.
정리 및 활용 팁
이처럼 SET 컬럼명 = 컬럼명 + 값 패턴을 사용하면 현재 값을 직접 조회하지 않고도 증분 업데이트를 처리할 수 있습니다. 응용하면 다음과 같은 작업에 활용할 수 있습니다.
- 재고 관리: 입고 시 stock = stock + 입고수량
- 조회수 증가: viewCount = viewCount + 1
- 포인트 적립: point = point + 적립포인트
반대로 값을 빼고 싶다면 덧셈 대신 뺄셈(-)을 사용하면 됩니다. 단, WHERE 조건을 반드시 지정해 의도하지 않은 전체 데이터 변경을 방지하는 것이 안전합니다.