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

MySQL에서 기존 테이블로 새 테이블 생성하기 – CTAS(CREATE TABLE AS SELECT) 활용법

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 유틸리티를 사용하는 것이 더 안전합니다.