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

MySQL 테이블의 모든 레코드를 다른 테이블로 한 번에 복사하는 방법

MySQL에서 하나의 테이블에 있는 모든 레코드를 그대로 다른 테이블로 가져와 삽입하고 싶다면 CREATE TABLE AS SELECT(CTAS) 구문을 사용하는 것이 가장 간단한 방법입니다. 이 구문은 새 테이블을 생성하는 동시에 기존 테이블의 데이터를 한 번에 복사해 줍니다.

1. 원본 테이블 생성하기

먼저 예제로 사용할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable1518
    -> (
    -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> EmployeeName varchar(20)
    -> )AUTO_INCREMENT=101;
Query OK, 0 rows affected (0.69 sec)

2. 레코드 삽입하기

INSERT 명령을 사용하여 테이블에 직원 정보를 몇 개 추가합니다.

mysql> insert into DemoTable1518(EmployeeName) values('John Doe');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1518(EmployeeName) values('John Smith');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1518(EmployeeName) values('David Miller');
Query OK, 1 row affected (0.14 sec)

3. 원본 테이블 데이터 확인하기

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

mysql> select * from DemoTable1518;

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

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|        101 | John Doe     |
|        102 | John Smith   |
|        103 | David Miller |
+------------+--------------+
3 rows in set (0.00 sec)

4. CREATE TABLE AS SELECT로 전체 레코드 복사하기

아래 쿼리가 바로 하나의 MySQL 테이블에서 모든 레코드를 가져와 새 테이블에 삽입하는 핵심 구문입니다. 테이블 구조와 데이터가 동시에 복사됩니다.

mysql> create table DemoTable1519 as select * from DemoTable1518;
Query OK, 3 rows affected (0.62 sec)
Records: 3  Duplicates: 0  Warnings: 0

5. 복사된 테이블 확인하기

새로 생성된 테이블을 SELECT 문으로 조회하여 데이터가 제대로 복사되었는지 확인합니다.

mysql> select * from DemoTable1519;

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

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|        101 | John Doe     |
|        102 | John Smith   |
|        103 | David Miller |
+------------+--------------+
3 rows in set (0.00 sec)

참고 사항

  • CREATE TABLE AS SELECT는 대상 테이블이 존재하지 않을 때 유용하며, 테이블 생성과 데이터 복사를 한 번에 처리합니다.
  • 이미 존재하는 테이블에 데이터를 추가하려면 INSERT INTO ... SELECT 구문을 사용해야 합니다.
  • CTAS 방식으로 복사할 경우 인덱스, AUTO_INCREMENT 속성, 외래 키 등 일부 테이블 속성은 자동으로 복사되지 않으므로 필요하다면 별도로 추가해야 합니다.
  • WHERE 절을 함께 사용하면 특정 조건에 맞는 레코드만 선택적으로 복사할 수도 있습니다.