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

MySQL에서 한 테이블의 열 데이터를 다른 테이블의 열로 복사하는 방법

MySQL에서 같은 데이터베이스에 있는 다른 테이블로 한 열의 데이터를 복사하려면 INSERT INTO ... SELECT 문을 사용하면 됩니다. 이 문법은 원본 테이블의 특정 열 값을 조회하여 그대로 대상 테이블의 열에 삽입해 주기 때문에, 별도의 애플리케이션 로직 없이 SQL만으로 데이터를 손쉽게 이동할 수 있습니다.

1단계: 원본 테이블 생성하기

먼저 복사할 데이터를 담고 있을 첫 번째 테이블을 생성합니다.

mysql> create table DemoTable1 (PlayerScore int);
Query OK, 0 rows affected (0.46 sec)

2단계: 원본 테이블에 데이터 삽입하기

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

mysql> insert into DemoTable1 values(98);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1 values(81);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1 values(76);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1 values(88);
Query OK, 1 row affected (0.15 sec)

3단계: 원본 테이블 데이터 확인하기

select 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable1;

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

+-------------+
| PlayerScore |
+-------------+
| 98 |
| 81 |
| 76 |
| 88 |
+-------------+
4 rows in set (0.00 sec)

4단계: 대상 테이블 생성하기

이제 데이터를 복사해 넣을 두 번째 테이블을 생성합니다.

mysql> create table DemoTable2 (Marks int);
Query OK, 0 rows affected (0.47 sec)

5단계: INSERT INTO SELECT 문으로 열 데이터 복사하기

다음 쿼리는 DemoTable1PlayerScore 열 값을 읽어 DemoTable2Marks 열에 그대로 삽입합니다.

mysql> insert into DemoTable2(Marks) select PlayerScore from DemoTable1;
Query OK, 4 rows affected (0.19 sec)
Records: 4 Duplicates: 0 Warnings: 0

결과 메시지를 보면 4개의 레코드가 성공적으로 복사되었음을 확인할 수 있습니다.

6단계: 복사 결과 확인하기

대상 테이블의 전체 레코드를 조회해 복사가 제대로 되었는지 확인합니다.

mysql> select *from DemoTable2;

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

+-------+
| Marks |
+-------+
| 98 |
| 81 |
| 76 |
| 88 |
+-------+
4 rows in set (0.00 sec)

정리

위 예제에서 확인했듯이, INSERT INTO 대상테이블(대상열) SELECT 원본열 FROM 원본테이블 형태의 쿼리 하나만으로 같은 데이터베이스 내 서로 다른 테이블 간에 열 데이터를 간편하게 복사할 수 있습니다. 참고로 두 테이블의 열 이름이 달라도 데이터 타입이 호환되기만 하면 정상적으로 동작합니다. 또한 WHERE 절을 함께 사용하면 조건에 맞는 일부 행만 선택적으로 복사하는 것도 가능합니다.