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

MySQL CTAS(CREATE TABLE AS SELECT)란? 개념과 사용법 완벽 정리

CTAS(Create Table As Select)는 기존 테이블을 기반으로 새로운 테이블을 생성하는 MySQL의 강력한 SQL 구문입니다. 이 구문을 사용하면 원본 테이블의 구조(스키마)데이터를 한 번에 복사할 수 있어, 백업 테이블 생성이나 데이터 복제 작업에 매우 유용합니다.

CTAS 기본 문법

CREATE TABLE 새_테이블명 AS SELECT * FROM 기존_테이블명;

예제로 살펴보기

다음 예제에서는 이미 존재하는 'Employee' 테이블로부터 'EMP_BACKUP'이라는 이름의 테이블을 생성해 보겠습니다.

먼저 원본 테이블인 'Employee' 테이블의 데이터를 확인합니다.

mysql> Select * from Employee;

+------+--------+
| Id   | Name   |
+------+--------+
| 100  | Ram    |
| 200  | Gaurav |
| 300  | Mohan  |
+------+--------+

3 rows in set (0.00 sec)

위 쿼리 결과에서 'Employee' 테이블에는 3개의 행이 저장되어 있는 것을 확인할 수 있습니다. 이제 아래 쿼리를 실행하면 '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)

실행 결과를 보면 'EMP_BACKUP' 테이블이 'Employee' 테이블의 모든 데이터와 구조를 그대로 복사한 것을 확인할 수 있습니다.

CTAS 활용 시 주의사항

  • 인덱스 미복사: CTAS로 생성된 테이블에는 원본 테이블의 인덱스가 복사되지 않습니다.
  • 제약 조건 미복사: PRIMARY KEY, FOREIGN KEY 등의 제약 조건도 함께 복사되지 않으므로 필요하다면 별도로 추가해야 합니다.
  • AUTO_INCREMENT 속성 미복사: AUTO_INCREMENT 속성 역시 새 테이블에 유지되지 않습니다.

정리

CTAS는 "Create Table As Select"의 약자로, 기존 테이블의 구조와 데이터를 손쉽게 복사하여 새 테이블을 만드는 방법입니다. 단 한 줄의 쿼리만으로 백업 테이블을 만들 수 있어 실무에서 자주 활용되지만, 인덱스나 제약 조건은 복사되지 않는다는 점을 반드시 기억해야 합니다.