Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 CONCAT() 함수로 복잡한 INSERT 작업 수행하는 방법

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 : 0

6단계: 최종 결과 확인

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() 함수를 조합하면 기존 테이블의 데이터를 원하는 형식으로 가공하면서 다른 테이블로 손쉽게 복사할 수 있어, 대량의 데이터를 일괄 변환·이관할 때 특히 유용합니다.