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

MySQL UPDATE 문으로 현재 값에 숫자 더하기 – 반복 갱신 방법

MySQL UPDATE 문으로 현재 값에 숫자 더하기

MySQL에서 특정 컬럼의 현재 값에 숫자를 추가하려면 UPDATE 명령어를 사용하면 됩니다. 게임 점수 누적, 좋아요 수 증가, 재고 수량 조정처럼 기존에 저장된 값을 기준으로 값을 더해야 하는 상황에서 매우 유용한 방법입니다.

기본 문법

update yourTableName set yourColumnName = yourColumnName + yourIntegerValue where <yourCondition>;

핵심은 컬럼명 자신을 다시 참조하여 값을 더하는 방식입니다. WHERE 절로 조건을 지정하지 않으면 테이블의 모든 행에 값이 더해지므로 주의해야 합니다.

예제 테이블 만들기

문법을 이해하기 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table addANumberToCurrentValueDemo
-> (
-> Game_Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Game_Score int
-> );
Query OK, 0 rows affected (0.67 sec)

게임 ID와 게임 점수를 저장하는 간단한 테이블입니다. Game_Id는 자동 증가(AUTO_INCREMENT) 기본 키로 설정했습니다.

샘플 데이터 삽입

INSERT 명령으로 몇 개의 레코드를 넣어 보겠습니다.

mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(1090);
Query OK, 1 row affected (0.30 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(204);
Query OK, 1 row affected (0.12 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(510);
Query OK, 1 row affected (0.14 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(7890);
Query OK, 1 row affected (0.14 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(8999);
Query OK, 1 row affected (0.11 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(1093859);
Query OK, 1 row affected (0.11 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(157596);
Query OK, 1 row affected (0.11 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(4857567);
Query OK, 1 row affected (0.28 sec)

저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from addANumberToCurrentValueDemo;

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

+---------+------------+
| Game_Id | Game_Score |
+---------+------------+
| 1 | 1090 |
| 2 | 204 |
| 3 | 510 |
| 4 | 7890 |
| 5 | 8999 |
| 6 | 1093859 |
| 7 | 157596 |
| 8 | 4857567 |
+---------+------------+
8 rows in set (0.05 sec)

현재 값에 숫자 더하기

이제 MySQL에서 현재 값에 숫자를 더하는 쿼리를 실행해 보겠습니다. Game_Id가 5인 행의 Game_Score에 11을 더하는 예제입니다.

mysql> update addANumberToCurrentValueDemo set Game_Score=Game_Score+11 where Game_Id=5;
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0

갱신 결과 확인

테이블을 다시 조회하여 Game_Score가 8999에서 9010으로 변경되었는지 확인합니다.

mysql> select *from addANumberToCurrentValueDemo;

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

+---------+------------+
| Game_Id | Game_Score |
+---------+------------+
| 1 | 1090 |
| 2 | 204 |
| 3 | 510 |
| 4 | 7890 |
| 5 | 9010 |
| 6 | 1093859 |
| 7 | 157596 |
| 8 | 4857567 |
+---------+------------+
8 rows in set (0.00 sec)

마무리 및 추가 팁

이처럼 SET 컬럼명 = 컬럼명 + 값 형태의 UPDATE 문을 사용하면 현재 값을 기준으로 손쉽게 숫자를 더할 수 있습니다. 같은 쿼리를 반복 실행하면 실행할 때마다 값이 계속 누적되므로, 점수나 카운터를 여러 번 갱신해야 하는 상황에도 그대로 활용할 수 있습니다.

참고로 값을 빼고 싶다면 덧셈 대신 뺄셈(-)을 사용하면 되고, 곱셈이나 나눗셈도 같은 방식으로 적용할 수 있습니다. 또한 WHERE 절을 생략하면 테이블의 모든 행에 연산이 적용되므로, 의도치 않은 전체 갱신을 피하려면 조건을 반드시 지정하는 것이 좋습니다.