MySQL에서는 사용자 정의 변수(user-defined variable)를 활용하면 테이블의 특정 필드 값을 지정한 백분율만큼 손쉽게 증가시킬 수 있습니다. 예를 들어 금액(Amount) 필드의 모든 값을 10%씩 인상하고 싶다면, 변수에 비율을 저장한 뒤 UPDATE 문에서 활용하면 됩니다.
1. 샘플 테이블 생성
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Amount int
-> );
Query OK, 0 rows affected (0.99 sec)
2. 데이터 삽입
INSERT 문을 이용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values(200);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(500);
Query OK, 1 row affected (0.13 sec)
3. 현재 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회합니다.
mysql> select *from DemoTable;
출력 결과
+--------+
| Amount |
+--------+
| 100 |
| 200 |
| 500 |
+--------+
3 rows in set (0.00 sec)
4. 백분율만큼 값 증가시키기
이제 사용자 정의 변수 @rate에 증가시킬 비율을 설정하고, UPDATE 문을 실행합니다. 핵심 공식은 Amount * (1 + @rate / 100)입니다.
mysql> set @rate=10;
Query OK, 0 rows affected (0.00 sec)
mysql> update DemoTable
-> set Amount=Amount*(1+@rate/100);
Query OK, 3 rows affected (0.18 sec)
Rows matched: 3 Changed: 3 Warnings: 0
위 쿼리는 @rate가 10이므로 각 값을 10% 증가시킵니다. 만약 20% 증가를 원한다면 set @rate=20;처럼 변수 값만 변경하면 되므로, 쿼리 본문을 수정할 필요 없이 재사용성이 뛰어납니다.
5. 업데이트 후 결과 확인
테이블을 다시 조회하여 변경된 값을 확인해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+--------+
| Amount |
+--------+
| 110 |
| 220 |
| 550 |
+--------+
3 rows in set (0.00 sec)
정리
사용자 정의 변수를 활용하면 다음과 같은 장점이 있습니다.
• 재사용성: 비율이 바뀌어도 변수 값만 변경하면 되므로 유지보수가 편리합니다.
• 가독성: 쿼리 내 의미 있는 변수명으로 로직을 명확하게 표현할 수 있습니다.
• 동적 처리: 애플리케이션에서 변수에 값을 동적으로 바인딩해 다양한 비율 연산에 대응할 수 있습니다.
이처럼 SET @변수 = 값;과 UPDATE ... SET 필드 = 필드 * (1 + @변수 / 100); 조합만으로 MySQL에서 백분율 기반 일괄 업데이트를 간단히 구현할 수 있습니다.