MySQL에서 기존 테이블을 그대로 복제해 새 테이블을 만들고 싶다면 CTAS(Create Table As Select) 구문을 사용하면 됩니다. CTAS는 CREATE TABLE ... AS SELECT 형태로 작성되며, 원본 테이블의 구조(컬럼 정의)와 데이터를 한 번에 복사해 줍니다.
CTAS 기본 문법
CREATE TABLE 새_테이블명 AS SELECT * FROM 원본_테이블;
예제: Employee 테이블 백업하기
먼저 원본 테이블 'Employee'에 저장된 데이터를 확인해 보겠습니다.
mysql> Select * from Employee;
+------+--------+
| Id | Name |
+------+--------+
| 100 | Ram |
| 200 | Gaurav |
| 300 | Mohan |
+------+--------+
3 rows in set (0.00 sec)
아래 쿼리는 'Employee' 테이블의 구조와 데이터를 모두 복사하여 'EMP_BACKUP'이라는 새 테이블을 생성합니다.
mysql> Create table EMP_BACKUP AS SELECT * from EMPLOYEE;
Query OK, 3 rows affected (0.15 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> Select * from EMP_BACKUP;
+------+--------+
| Id | Name |
+------+--------+
| 100 | Ram |
| 200 | Gaurav |
| 300 | Mohan |
+------+--------+
3 rows in set (0.00 sec)
실행 결과를 보면 'Employee' 테이블의 모든 데이터와 구조가 그대로 복사된 것을 확인할 수 있습니다.
참고: 구조만 복사하고 싶다면?
데이터 없이 테이블 구조만 복사하고 싶다면 WHERE 절에 항상 거짓이 되는 조건을 추가하면 됩니다.
mysql> Create table EMP_BACKUP AS SELECT * FROM EMPLOYEE WHERE 1=0;
또한 CTAS로 생성된 테이블은 인덱스, 기본 키(PK), 외래 키(FK) 같은 제약 조건은 함께 복사되지 않는다는 점에 유의해야 합니다. 제약 조건까지 포함한 완전한 백업이 필요하다면 mysqldump 유틸리티를 사용하는 것이 더 안전합니다.