MySQL에서는 CREATE TABLE ... LIKE 구문을 사용하면 기존 테이블의 구조(컬럼 정의, 데이터 타입, 인덱스, PRIMARY KEY 등)를 그대로 복제한 새로운 빈 테이블을 손쉽게 만들 수 있습니다. 아래에서 실제 예제와 함께 단계별로 살펴보겠습니다.
1. 원본 테이블 생성하기
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable1
(
EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName varchar(50)
);
Query OK, 0 rows affected (0.48 sec)2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable1(EmployeeName) values('Tom');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1(EmployeeName) values('Mike');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1(EmployeeName) values('Emma');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1(EmployeeName) values('Sam');
Query OK, 1 row affected (0.10 sec)3. 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1;
실행 결과는 다음과 같습니다.
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 1 | Tom | | 2 | Mike | | 3 | Emma | | 4 | Sam | +------------+--------------+ 4 rows in set (0.00 sec)
4. LIKE를 사용해 새 테이블 생성하기
이제 핵심 단계입니다. 다음 쿼리처럼 CREATE TABLE ... LIKE를 사용하면 DemoTable1과 동일한 구조를 가진 DemoTable2가 생성됩니다.
mysql> create table DemoTable2 LIKE DemoTable1; Query OK, 0 rows affected (0.55 sec)
5. 새 테이블 구조 확인하기
DESC 명령어로 새로 만든 테이블의 구조를 확인해 보겠습니다.
mysql> desc DemoTable2;
실행 결과는 다음과 같습니다.
+--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | EmployeeId | int(11) | NO | PRI | NULL | auto_increment | | EmployeeName | varchar(50) | YES | | NULL | | +--------------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)
참고 사항
CREATE TABLE ... LIKE는 컬럼 정의뿐만 아니라 PRIMARY KEY, 인덱스 등 테이블 속성까지 함께 복사하지만, 원본 테이블의 데이터는 복사되지 않는다는 점에 유의하세요. 구조와 데이터를 모두 복제하고 싶다면 CREATE TABLE ... AS SELECT 구문을 사용할 수 있으며, 이 경우에는 인덱스나 키 정보가 복사되지 않으므로 상황에 맞게 선택하는 것이 좋습니다.