MySQL UPDATE 문에서 산술 연산 실행하기
MySQL에서는 UPDATE 문을 사용해 테이블을 갱신하는 동시에 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 같은 산술 연산을 손쉽게 수행할 수 있습니다.
기본 문법
예를 들어 더하기(+) 연산자를 실행하는 기본 문법은 다음과 같습니다.
UPDATE yourTableName SET yourColumnName3 = (yourColumnName1 + yourColumnName2);
위 문법은 더하기 연산자에 해당하며, 다른 연산을 수행하려면 기호만 -, *, / 로 바꿔주면 됩니다.
예제 테이블 생성
먼저 실습용 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable
-> (
-> Number1 int,
-> Number2 int,
-> AddResult int,
-> MinusResult int,
-> MultiplyResult int,
-> DivideResult int
-> );
Query OK, 0 rows affected (0.89 sec)데이터 삽입
INSERT 명령으로 테이블에 레코드를 추가합니다.
mysql> INSERT INTO DemoTable(Number1, Number2) VALUES(40, 20); Query OK, 1 row affected (0.16 sec)
현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> SELECT * FROM DemoTable;
결과는 다음과 같습니다. 연산 결과 컬럼들이 아직 NULL인 것을 확인할 수 있습니다.
+---------+---------+-----------+-------------+----------------+--------------+ | Number1 | Number2 | AddResult | MinusResult | MultiplyResult | DivideResult | +---------+---------+-----------+-------------+----------------+--------------+ | 40 | 20 | NULL | NULL | NULL | NULL | +---------+---------+-----------+-------------+----------------+--------------+ 1 row in set (0.00 sec)
UPDATE 문으로 사칙연산 수행
이제 UPDATE 문을 이용해 더하기, 빼기, 곱하기, 나누기 연산을 한 번에 처리하는 쿼리입니다.
mysql> UPDATE DemoTable SET AddResult = (Number1 + Number2); Query OK, 1 row affected (0.22 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> UPDATE DemoTable SET MinusResult = (Number1 - Number2); Query OK, 1 row affected (0.08 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> UPDATE DemoTable SET MultiplyResult = (Number1 * Number2); Query OK, 1 row affected (0.08 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> UPDATE DemoTable SET DivideResult = (Number1 / Number2); Query OK, 1 row affected (0.07 sec) Rows matched: 1 Changed: 1 Warnings: 0
최종 결과 확인
테이블의 레코드를 다시 조회해 보겠습니다.
mysql> SELECT * FROM DemoTable;
실행 결과, 각 연산 결과가 정상적으로 저장된 것을 확인할 수 있습니다.
+---------+---------+-----------+-------------+----------------+--------------+ | Number1 | Number2 | AddResult | MinusResult | MultiplyResult | DivideResult | +---------+---------+-----------+-------------+----------------+--------------+ | 40 | 20 | 60 | 20 | 800 | 2 | +---------+---------+-----------+-------------+----------------+--------------+ 1 row in set (0.00 sec)
정리
40 + 20 = 60, 40 - 20 = 20, 40 * 20 = 800, 40 / 20 = 2로 네 가지 산술 연산이 모두 정상적으로 수행되었습니다. 참고로 MySQL에서 나누기 연산은 소수점 결과를 반환할 수 있으므로, 결과 컬럼의 데이터 타입을 FLOAT나 DECIMAL로 지정하면 더 정확한 값을 저장할 수 있습니다.