MySQL에서는 사용자 정의 변수(@변수)에 값을 저장한 뒤, 이를 UPDATE 쿼리에 활용하여 특정 행의 열 값을 손쉽게 증가시킬 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1349
-> (
-> ProductId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ProductPrice int
-> );
Query OK, 0 rows affected (0.71 sec)
2. 레코드 삽입하기
INSERT 명령어를 사용해 테이블에 여러 개의 상품 가격 데이터를 입력합니다.
mysql> insert into DemoTable1349(ProductPrice) values(7644);
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable1349(ProductPrice) values(90843);
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable1349(ProductPrice) values(9083);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1349(ProductPrice) values(10000);
Query OK, 1 row affected (0.12 sec)
3. 전체 레코드 조회하기
SELECT 문으로 테이블에 저장된 모든 데이터를 확인합니다.
mysql> select * from DemoTable1349;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+--------------+
| ProductId | ProductPrice |
+-----------+--------------+
| 1 | 7644|
| 2 | 90843|
| 3 | 9083|
| 4 | 10000|
+-----------+--------------+
4 rows in set (0.00 sec)
4. 사용자 정의 변수를 활용한 UPDATE 쿼리 실행
이제 MySQL 테이블의 행 열을 업데이트하는 핵심 부분입니다. 먼저 나중에 더할 값으로 사용자 정의 변수를 설정하고, SET 문에서 해당 변수를 활용해 특정 행의 ProductPrice 값을 증가시킵니다.
mysql> set @AppendValue:=500;
Query OK, 0 rows affected (0.00 sec)
mysql> update DemoTable1349 set ProductPrice=ProductPrice+@AppendValue where ProductId=4;
Query OK, 1 row affected (0.13 sec)
Rows matched: 1 Changed: 1 Warnings: 0
여기서 @AppendValue라는 사용자 정의 변수에 500을 저장한 후, WHERE 절로 ProductId가 4인 행만 골라 기존 가격에 변수 값을 더했습니다.
5. 업데이트 결과 확인하기
테이블의 레코드를 다시 한번 조회해 변경 사항을 확인합니다.
mysql> select * from DemoTable1349;
실행 결과는 다음과 같습니다.
+-----------+--------------+
| ProductId | ProductPrice |
+-----------+--------------+
| 1 | 7644|
| 2 | 90843|
| 3 | 9083|
| 4 | 10500|
+-----------+--------------+
4 rows in set (0.00 sec)
ProductId가 4인 행의 ProductPrice가 10,000에서 10,500으로 500만큼 증가한 것을 확인할 수 있습니다. 이처럼 사용자 정의 변수를 활용하면 값을 하드코딩하지 않고도 유연하게 UPDATE 작업을 수행할 수 있으며, 동일한 변수를 여러 쿼리에서 재사용할 수 있다는 장점이 있습니다.