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

MySQL LIKE 연산자로 기존 테이블의 구조를 그대로 복제한 새 테이블 생성하기

LIKE 연산자의 기본 문법

MySQL에서 기존 테이블의 컬럼 구조와 속성을 중복 정의 없이 그대로 유지한 새 테이블을 생성하려면 LIKE 연산자를 사용하는 것이 가장 간단합니다. 기본 문법은 다음과 같습니다.

CREATE TABLE 새_테이블명 LIKE 원본_테이블명;

예제 테이블 생성 및 데이터 입력

문법을 이해하기 위해 먼저 예제 테이블을 생성하고 레코드를 삽입해 보겠습니다. 아래는 테이블을 생성하는 쿼리입니다.

mysql> create table Employee
-> (
    -> EmployeeId int,
    -> EmployeeName varchar(100)
-> );
Query OK, 0 rows affected (0.54 sec)

insert 명령어를 사용해 테이블에 레코드를 삽입합니다.

mysql> insert into Employee values(1,'Carol');
Query OK, 1 row affected (0.18 sec)

mysql> insert into Employee values(2,'John');
Query OK, 1 row affected (0.16 sec)

mysql> insert into Employee values(3,'Johnson');
Query OK, 1 row affected (0.11 sec)

select 문으로 저장된 모든 레코드를 확인할 수 있습니다.

mysql> select *from Employee;

실행 결과는 다음과 같습니다.

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+|         2 |         John |
|         3 |      Johnson |
+------------+--------------+
3 rows in set (0.00 sec)

LIKE 연산자로 새 테이블 생성하기

이제 앞서 소개한 문법을 실제로 적용해 보겠습니다. LIKE 연산자를 활용해 원본 테이블과 동일한 구조의 새 테이블을 생성하는 쿼리는 다음과 같습니다.

mysql> create table StudentModifyTableDemo Like Employee;
Query OK, 0 rows affected (0.50 sec)

desc 명령어로 새 테이블의 구조가 원본과 동일하게 복제되었는지 확인할 수 있습니다.

mysql> desc StudentModifyTableDemo;

실행 결과는 다음과 같습니다.

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| EmployeeId   | int(11)      | YES  |     | NULL    |       |
| EmployeeName | varchar(100) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
2 rows in set (0.12 sec)

원본 데이터 복사 및 검증

LIKE 연산자로 생성한 테이블은 구조만 복제되고 데이터는 비어 있는 상태입니다. 따라서 INSERT ... SELECT 문을 사용해 원본 테이블(Employee)의 모든 레코드를 새 테이블(StudentModifyTableDemo)로 복사해야 합니다.

mysql> insert into StudentModifyTableDemo select *from Employee;
Query OK, 3 rows affected (0.16 sec)
Records: 3 Duplicates: 0 Warnings: 0

마지막으로 새 테이블에 모든 레코드가 정상적으로 복사되었는지 확인합니다.

mysql> select *from StudentModifyTableDemo;

실행 결과는 다음과 같습니다.

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|         1 |        Carol |
|         2 |         John |
|         3 |      Johnson |
+------------+--------------+
3 rows in set (0.00 sec)

정리

이처럼 CREATE TABLE ... LIKE 구문을 사용하면 컬럼 이름, 데이터 타입 등 원본 테이블의 구조를 그대로 유지한 빈 테이블을 손쉽게 만들 수 있습니다. 이후 INSERT INTO ... SELECT 문으로 데이터까지 복사하면 원본과 완전히 동일한 테이블을 확보할 수 있습니다.