MySQL에서 변수를 선언하려면 SET 문을 사용합니다. 그리고 변수에 저장된 정수 값을 특정 열의 기존 값에 더하려면 UPDATE 문과 SET 절을 함께 활용하면 됩니다.
기본 문법
set @anyVariableName:=yourValue; update yourTableName set yourColumnName=yourColumnName+ @yourVariableName;
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
1. 테이블 생성
mysql> create table DemoTable -> ( -> Number int -> ); Query OK, 0 rows affected (0.68 sec)
2. 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(40); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(60); Query OK, 1 row affected (0.13 sec)
3. 현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
출력 결과
+--------+ | Number | +--------+ | 10 | | 20 | | 40 | | 60 | +--------+ 4 rows in set (0.00 sec)
변수 값을 열에 더하는 쿼리
이제 변수에 정수 값을 할당한 뒤, 해당 값을 열 전체에 더하는 실제 쿼리입니다.
mysql> set @intValue:=100; Query OK, 0 rows affected (0.00 sec) mysql> update DemoTable set Number=Number+ @intValue; Query OK, 4 rows affected (0.15 sec) Rows matched: 4 Changed: 4 Warnings: 0
위 쿼리에서는 먼저 @intValue라는 사용자 변수에 100을 할당했습니다. 이후 UPDATE 문을 실행하여 Number 열의 모든 행에 100씩 더했습니다.
결과 확인
테이블의 레코드를 다시 한번 조회해 변경된 값을 확인해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+--------+ | Number | +--------+ | 110 | | 120 | | 140 | | 160 | +--------+ 4 rows in set (0.00 sec)
출력 결과에서 볼 수 있듯이, 모든 행의 값이 정확히 100씩 증가했습니다(10→110, 20→120, 40→140, 60→160). 이처럼 MySQL의 사용자 정의 변수와 UPDATE 문을 조합하면, 별도의 애플리케이션 로직 없이 데이터베이스 차원에서 간단하게 일괄적인 산술 연산을 처리할 수 있습니다.