MySQL에서 다른 테이블과 동일한 테이블 생성하기
MySQL에서 기존 테이블과 동일한 구조를 가진 새 테이블을 만들려면 CREATE TABLE 명령어와 LIKE 연산자를 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.
create table yourNewTableName like yourOldTableName;
위 문법은 원본 테이블의 구조(컬럼 정의, 인덱스 등)만 복제합니다. 데이터까지 함께 복사하고 싶다면 INSERT INTO ... SELECT 명령어를 추가로 사용해야 합니다.
insert into yourNewTableName select * from yourOldTableName;
1. 원본 테이블 생성 및 데이터 준비
먼저 예제로 사용할 원본 테이블을 생성합니다.
mysql> create table WholeWordMatchDemo -> ( -> Words varchar(200) -> ); Query OK, 0 rows affected (0.84 sec)
2. LIKE를 이용해 테이블 구조 복제하기
이제 LIKE 연산자를 사용해 원본 테이블과 동일한 구조의 새 테이블을 생성합니다.
mysql> create table NewTableDuplicate Like WholeWordMatchDemo; Query OK, 0 rows affected (0.62 sec)
SHOW CREATE TABLE 명령으로 새 테이블의 구조가 제대로 생성되었는지 확인할 수 있습니다.
mysql> show create table NewTableDuplicate;
실행 결과는 다음과 같습니다.
+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | NewTableDuplicate | CREATE TABLE `newtableduplicate` (`Words` varchar(200) DEFAULT NULL) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci | +-------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
출력 결과에서 확인할 수 있듯이, 새 테이블은 원본 테이블과 동일한 컬럼 정의와 스토리지 엔진(InnoDB), 문자셋(utf8mb4), 콜레이션 설정까지 그대로 물려받습니다.
3. INSERT INTO ... SELECT로 데이터 복사하기
'NewTableDuplicate' 테이블에 원본 테이블의 모든 레코드를 복사합니다.
mysql> insert into NewTableDuplicate select * from WholeWordMatchDemo; Query OK, 3 rows affected (0.19 sec) Records: 3 Duplicates: 0 Warnings: 0
SELECT 문으로 새 테이블에 데이터가 모두 들어갔는지 확인해 보겠습니다.
mysql> select * from NewTableDuplicate;
실행 결과:
+----------------------+ | Words | +----------------------+ | My Name is John | | Carol | | My Name is Johnson | +----------------------+ 3 rows in set (0.00 sec)
원본 테이블도 조회하여 두 테이블의 데이터가 동일한지 비교해 봅니다.
mysql> select * from WholeWordMatchDemo;
실행 결과:
+----------------------+ | Words | +----------------------+ | My Name is John | | Carol | | My Name is Johnson | +----------------------+ 3 rows in set (0.00 sec)
정리
CREATE TABLE ... LIKE는 테이블 구조(스키마)만 복제하고, INSERT INTO ... SELECT *는 기존 테이블의 데이터를 새 테이블로 복사합니다. 이 두 명령어를 조합하면 MySQL에서 기존 테이블과 완전히 동일한 백업 테이블 또는 복제 테이블을 손쉽게 만들 수 있습니다.