MySQL에서는 행에 데이터를 삽입할 때 단순한 고정값뿐만 아니라, 표현식이나 함수 등을 통해 자체적으로 계산된 결과값도 그대로 사용할 수 있습니다. 이 기능을 활용하면 별도의 사전 계산 없이 INSERT 문 안에서 직접 연산을 수행하고 그 결과를 저장할 수 있어 매우 편리합니다.
기본 사용 예시
아래 예제는 INSERT INTO ... SELECT 구문과 함께 산술 표현식(1+1)과 문자열 함수(CONCAT_WS())의 계산 결과를 employee 테이블에 삽입하는 과정을 보여줍니다.
mysql> Insert into employee(id, emp_name) Select 1+1, Concat_ws(' ','Gaurav', 'Kumar');
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> Select * from employee;
+------+--------------+
| id | emp_name |
+------+--------------+
| 2 | Gaurav Kumar |
+------+--------------+
1 row in set (0.00 sec)결과 분석
위 쿼리가 실행되면 다음과 같은 방식으로 처리됩니다.
- id 컬럼: 표현식
1+1이 즉시 계산되어 결과값 2가 저장됩니다. - emp_name 컬럼:
CONCAT_WS(' ', 'Gaurav', 'Kumar')함수가 두 문자열을 공백으로 연결하여 'Gaurav Kumar'라는 하나의 문자열로 만든 뒤 저장합니다.
이처럼 SELECT 절에 오는 값들은 반드시 다른 테이블에서 가져올 필요가 없으며, 순수하게 계산된 상수 표현식이나 함수 호출 결과만으로도 충분합니다. 날짜 함수(NOW(), CURDATE()), 수학 함수(ROUND(), ABS()) 등 어떤 MySQL 내장 함수든 동일한 방식으로 INSERT 문에서 활용할 수 있습니다.