MySQL에서는 UPDATE 명령어를 사용하여 특정 행(row)의 숫자 값을 손쉽게 1씩 증가 또는 감소시킬 수 있습니다. 반대로 값을 증가시키고 싶다면 yourColumnName+1로 작성하면 되고, 감소시키려면 아래와 같이 -1을 사용합니다.
기본 문법은 다음과 같습니다.
UPDATE yourTableName SET yourColumnName = yourColumnName-1 WHERE condition;
예제 테이블 생성하기
실제로 행 값을 1씩 감소시키는 과정을 살펴보기 위해 먼저 예제용 테이블을 생성하겠습니다. 다음 쿼리를 실행합니다.
mysql> CREATE TABLE IncrementAndDecrementValue -> ( -> UserId int, -> UserScores int -> ); Query OK, 0 rows affected (0.60 sec)
데이터 삽입하기
INSERT 명령어를 사용하여 테이블에 샘플 레코드를 추가합니다.
mysql> INSERT INTO IncrementAndDecrementValue VALUES(101,20000); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO IncrementAndDecrementValue VALUES(102,30000); Query OK, 1 row affected (0.20 sec) mysql> INSERT INTO IncrementAndDecrementValue VALUES(103,40000); Query OK, 1 row affected (0.11 sec)
저장된 데이터 조회하기
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> SELECT *FROM IncrementAndDecrementValue;
실행 결과는 다음과 같습니다.
+--------+------------+ | UserId | UserScores | +--------+------------+ | 101 | 20000 | | 102 | 30000 | | 103 | 40000 | +--------+------------+ 3 rows in set (0.00 sec)
WHERE 조건으로 값 1씩 감소시키기
이제 WHERE 조건절과 함께 UPDATE 문을 사용하여 UserId가 103인 행의 UserScores 값을 1만큼 감소시켜 보겠습니다.
mysql> UPDATE IncrementAndDecrementValue SET UserScores = UserScores-1 WHERE UserId = 103; Query OK, 1 row affected (0.41 sec) Rows matched: 1 Changed: 1 Warnings: 0
쿼리 실행 결과 Rows matched: 1, Changed: 1이 표시되므로, 조건에 맞는 한 개의 행이 성공적으로 수정되었음을 알 수 있습니다.
업데이트 결과 확인하기
값이 실제로 변경되었는지 SELECT 문으로 다시 확인해 보겠습니다.
mysql> SELECT *FROM IncrementAndDecrementValue;
아래 출력 결과를 보면 UserId가 103인 행의 UserScores 값이 40000에서 39999로 정상적으로 감소한 것을 확인할 수 있습니다.
+--------+------------+ | UserId | UserScores | +--------+------------+ | 101 | 20000 | | 102 | 30000 | | 103 | 39999 | +--------+------------+ 3 rows in set (0.00 sec)
정리
MySQL에서 특정 행의 값을 감소시키는 방법은 매우 간단합니다. UPDATE 문에서 대상 컬럼에 컬럼명-1을 지정하고, WHERE 절로 원하는 행을 정확히 필터링하면 됩니다. 이 방식은 게임 점수 차감, 재고 수량 조절 등 다양한 상황에서 유용하게 활용할 수 있으며, 값을 증가시킬 때는 동일한 방식으로 +1을 사용하면 됩니다.