MySQL에서 복잡한 형태의 INSERT 작업을 수행해야 할 때는 CONCAT() 함수를 활용하면 매우 유용합니다. 이번 글에서는 StudentId와 StudentFirstName 컬럼을 가진 테이블을 예시로 들어, 기존 테이블의 데이터를 다른 테이블로 연결하여 삽입하는 과정을 단계별로 살펴보겠습니다.
복잡한 INSERT 작업을 실행하면 모든 값 앞에 'Web Student'라는 텍스트가 붙고, 각 행마다 고유한 StudentId가 함께 연결되어 저장됩니다.
1단계: 첫 번째 테이블 생성
먼저 예제에 사용할 첫 번째 테이블을 생성하는 쿼리는 다음과 같습니다.
mysql> create table DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName varchar(20)
);
Query OK, 0 rows affected (0.55 sec)2단계: 샘플 데이터 삽입
INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(StudentFirstName) values('John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentFirstName) values('Larry');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentFirstName) values('Bob');
Query OK, 1 row affected (0.13 sec)3단계: 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+------------------+ | StudentId | StudentFirstName | +-----------+------------------+ | 1 | John | | 2 | Larry | | 3 | Bob | +-----------+------------------+ 3 rows in set (0.00 sec)
4단계: 두 번째 테이블 생성
이번에는 데이터를 삽입할 대상인 두 번째 테이블을 생성합니다.
mysql> create table DemoTable2 ( ClientId int, ClientProjectName varchar(20) ); Query OK, 0 rows affected (0.54 sec)
5단계: CONCAT()을 활용한 복잡한 INSERT 실행
다음이 바로 CONCAT() 함수를 사용한 복잡한 INSERT 쿼리입니다. INSERT INTO ... SELECT 구문과 결합하여 한 번에 여러 행을 처리할 수 있습니다.
mysql> insert into DemoTable2 select StudentId,concat('Web Student=', StudentId) from DemoTable;
Query OK, 3 rows affected (0.17 sec)
Records : 3 Duplicates : 0 Warnings : 06단계: 최종 결과 확인
SELECT 문으로 두 번째 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable2;
실행 결과는 다음과 같습니다.
+----------+-------------------+ | ClientId | ClientProjectName | +----------+-------------------+ | 1 | Web Student=1 | | 2 | Web Student=2 | | 3 | Web Student=3 | +----------+-------------------+ 3 rows in set (0.00 sec)
결과를 보면 DemoTable의 각 StudentId가 DemoTable2의 ClientId로 그대로 삽입되었고, ClientProjectName 컬럼에는 'Web Student='라는 문자열과 해당 StudentId가 CONCAT() 함수로 연결된 값이 저장된 것을 확인할 수 있습니다.
이처럼 SELECT 문과 CONCAT() 함수를 조합하면 기존 테이블의 데이터를 원하는 형식으로 가공하면서 다른 테이블로 손쉽게 복사할 수 있어, 대량의 데이터를 일괄 변환·이관할 때 특히 유용합니다.