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 문으로 데이터까지 복사하면 원본과 완전히 동일한 테이블을 확보할 수 있습니다.