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

MySQL에서 상수와 다른 테이블의 데이터를 결합하여 삽입하는 쿼리 사용법

MySQL에서는 INSERT INTO ... SELECT 문을 활용하면 한 테이블의 데이터를 조회하면서 동시에 고정된 값(상수)을 함께 삽입할 수 있습니다. 예를 들어, 기존 직원 명단 테이블에서 이름만 가져오고, 나머지 컬럼에는 공통으로 적용되는 상숫값을 넣어야 하는 경우에 유용합니다.

아래 예제를 통해 단계별로 살펴보겠습니다.

1단계: 첫 번째 테이블 생성하기

먼저 이름 데이터를 담을 테이블을 생성합니다.

mysql> create table DemoTable1(Name varchar(100));
Query OK, 0 rows affected (0.83 sec)

2단계: 테이블에 레코드 삽입하기

insert 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable1 values('John');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1 values('Chris');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1 values('Robert');
Query OK, 1 row affected (0.13 sec)

3단계: 저장된 데이터 확인하기

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable1;

위 쿼리를 실행하면 아래와 같은 결과가 출력됩니다.

+--------+
| Name   |
+--------+
| John   |
| Chris  |
| Robert |
+--------+
3 rows in set (0.00 sec)

4단계: 두 번째 테이블 생성하기

이번에는 상숫값과 직원 이름을 함께 저장할 두 번째 테이블을 만듭니다.

mysql> create table DemoTable2(
   ConstantValue int,
   EmployeeName varchar(100)
);
Query OK, 0 rows affected (0.70 sec)

5단계: 상수와 병합하여 데이터 삽입하기

핵심은 INSERT INTO ... SELECT 구문입니다. select 절에서 상숫값 '1000'을 첫 번째 컬럼에 지정하고, DemoTable1에서 Name 값을 함께 선택하면 모든 행에 동일한 상수가 채워진 채로 삽입됩니다.

mysql> insert into DemoTable2(ConstantValue,EmployeeName) select '1000',Name from DemoTable1;
Query OK, 3 rows affected (0.13 sec)
Records: 3 Duplicates: 0 Warnings: 0

결과 확인하기

select 문으로 DemoTable2의 전체 레코드를 조회합니다.

mysql> select *from DemoTable2;

실행 결과는 다음과 같습니다.

+---------------+--------------+
| ConstantValue | EmployeeName |
+---------------+--------------+
| 1000         | John         |
| 1000         | Chris        |
| 1000         | Robert       |
+---------------+--------------+
3 rows in set (0.00 sec)

정리

이처럼 INSERT INTO ... SELECT 문의 select 절에 리터럴 값을 직접 작성하면, 원본 테이블의 데이터와 상수를 손쉽게 병합하여 새 테이블에 삽입할 수 있습니다. 일괄적으로 특정 값을 부여해야 하는 데이터 마이그레이션 작업에서 특히 유용한 기법이므로 꼭 익혀두시기 바랍니다.