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

MySQL에서 다른 테이블과 동일한 테이블 생성하는 방법

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에서 기존 테이블과 완전히 동일한 백업 테이블 또는 복제 테이블을 손쉽게 만들 수 있습니다.