MySQL 다른 테이블 복사해서 만들기 LIKE 사용 방법

MySQL에서 테이블을 만들때 CREATE TABLE를 사용합니다.

CREATE TABLE를 사용해 테이블을 만들때 다른 테이블과 컬럼과 테이블 속성을 그대로 복사해서 맏들수 있습니다.

다른 테이블에 정의한 내용을 그대로 복사해 새로운 테이블을 만드는 방법을 확인해 보겠습니다.

테스트용 테이블로 Member을 사용하겠습니다.

mysql> SELECT * FROM Member;
+----+----------+-------+------+--------+---------+
| id | Memberid | name  | age  | gender | company |
+----+----------+-------+------+--------+---------+
|  1 |        1 | tom   |   24 | F      | A       |
|  2 |        2 | cat   |   36 | F      | A       |
|  3 |        3 | work  |   29 | M      | C       |
|  4 |        4 | bench |   45 | F      | A       |
|  5 |        5 | post  |   59 | F      | B       |
|  6 |        6 | gre   |   21 | M      | C       |
|  7 |        8 | php   |   23 | F      | NULL    |
|  8 |        9 | da    |   61 | M      | NULL    |
|  9 |        7 | jang  |   36 | M      | E       |
+----+----------+-------+------+--------+---------+
9 rows in set (0.00 sec)

 

Member 테이블은 아래의 쿼리로 생성한 테이블 입니다.

CREATE TABLE `Member` (
  `id` int NOT NULL AUTO_INCREMENT,
  `Memberid` int DEFAULT NULL,
  `name` varchar(32) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `gender` varchar(4) DEFAULT NULL,
  `company` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

 

기본키로 id 컬럼을 지정했습니다.

그리고 AUTO_INCREMENT도 설정해 값이 자동증가 하도록 되어있습니다.

CREATE TABLE에 LIKE옵션을 사용해 Member테이블과 동일한 테이블을 만들도록 하겠습니다.

LIKE옵션 작성 방법은 아래와 같습니다.

CREATE TABLE 새로운 테이블 LIKE 원본 테이블

 

Member테이블을 이용해 Member_copy테이블을 만들겠습니다.

mysql> CREATE TABLE Member_copy LIKE Member;
Query OK, 0 rows affected (0.27 sec)

 

Member 테이블의 속성과 Member_copy 테이블 속성을 보겠습니다.

Member 테이블 속성

mysql> DESCRIBE Member;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| Memberid | int         | YES  |     | NULL    |                |
| name     | varchar(32) | YES  |     | NULL    |                |
| age      | int         | YES  |     | NULL    |                |
| gender   | varchar(4)  | YES  |     | NULL    |                |
| company  | varchar(32) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

 

Member_copy 테이블 속성

mysql> DESCRIBE Member_copy;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| Memberid | int         | YES  |     | NULL    |                |
| name     | varchar(32) | YES  |     | NULL    |                |
| age      | int         | YES  |     | NULL    |                |
| gender   | varchar(4)  | YES  |     | NULL    |                |
| company  | varchar(32) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)

 

테이블 컬럼에 정의된 속성이 동일합니다.

Member_copy 테이블 정의(DDL)을 취득해 자세히 비교해보겠습니다.

CREATE TABLE `Member_copy` (
  `id` int NOT NULL AUTO_INCREMENT,
  `Memberid` int DEFAULT NULL,
  `name` varchar(32) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `gender` varchar(4) DEFAULT NULL,
  `company` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

 

테이블 작성문도 MemberMember_copy가 동일합니다.

하지만 데이터는 복사해오지 않기 때문에 현재 AUTO_INCREMENT값은 다릅니다.

데이터도 복사해와야 하는 경우에는 CREATE TABLE LIKE로 테이블을 생성한뒤 INSERT INTO SELECT로 데이터를 가져오면 됩니다.

mysql> INSERT INTO Member_copy SELECT * FROM Member;
Query OK, 9 rows affected (0.03 sec)
Records: 9  Duplicates: 0  Warnings: 0

 

Member 테이블과 속성과 데이터가 동일한 Member_copy 테이블이 생성되었습니다.

댓글