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

MySQL에서 다른 테이블과 동일한 구조를 자동으로 정의하는 방법 (CREATE TABLE LIKE)

MySQL에서 기존 테이블과 똑같은 구조를 가진 새 테이블을 만들고 싶다면 CREATE TABLE 명령어에 LIKE 키워드를 함께 사용하면 됩니다. 이 방법을 사용하면 컬럼 정의를 일일이 복사하지 않아도 원본 테이블의 구조(컬럼명, 데이터 타입, 키, auto_increment 설정 등)를 그대로 복제할 수 있습니다.

기본 문법

CREATE TABLE new_table LIKE old_table;

위 문법에서 new_table은 새로 생성할 테이블 이름, old_table은 구조를 복사할 원본 테이블 이름입니다.

예제

먼저 예제로 사용할 employee 테이블을 생성하고 구조를 확인해 보겠습니다.

mysql> Create table employee(ID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, NAME VARCHAR(20));
Query OK, 0 rows affected (0.21 sec)

mysql> Describe employee;

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| ID    | int(11)     | NO   | PRI | NULL    | auto_increment |
| NAME  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

2 rows in set (0.07 sec)

LIKE를 사용한 테이블 구조 복제

다음 쿼리는 employee 테이블과 동일한 구조를 가진 employee1 테이블을 생성합니다.

mysql> create table employee1 like employee;
Query OK, 0 rows affected (0.19 sec)

mysql> describe employee1;

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| ID    | int(11)     | NO   | PRI | NULL    | auto_increment |
| NAME  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

2 rows in set (0.14 sec)

DESCRIBE 명령어로 확인해 보면 employee1 테이블이 원본 employee 테이블과 완전히 동일한 구조를 가지고 있음을 알 수 있습니다. PRIMARY KEY와 AUTO_INCREMENT 속성까지 그대로 복사된 것을 확인할 수 있습니다.

참고 사항

CREATE TABLE ... LIKE는 테이블의 구조만 복사하며 데이터는 복사하지 않습니다. 또한 인덱스, PRIMARY KEY 등의 제약 조건도 함께 복사됩니다. 만약 구조뿐 아니라 데이터까지 함께 복사하고 싶다면 아래와 같이 INSERT INTO ... SELECT 문을 추가로 실행하면 됩니다.

INSERT INTO new_table SELECT * FROM old_table;