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

MySQL SELECT INTO 완벽 정리: CREATE TABLE AS SELECT로 테이블 복사하기

MySQL에서 SELECT INTO의 역할은 무엇인가?

다른 데이터베이스와 달리 MySQL에는 SELECT INTO 구문이 존재하지 않습니다. 대신 동일한 기능을 수행하는 것이 바로 CREATE TABLE AS SELECT 문입니다. 이 구문을 사용하면 기존 테이블의 데이터를 그대로 복사하여 새로운 테이블을 손쉽게 생성할 수 있습니다.

기본 문법은 다음과 같습니다.

CREATE TABLE 새테이블명 AS SELECT * FROM 기존테이블명;

예제 테이블 생성하기

개념을 이해하기 위해 먼저 예제용 테이블을 만들어 보겠습니다.

mysql> create table selectIntoEquivalentDemo
-> (
-> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ClientName varchar(20),
-> ClientAge int
-> );
Query OK, 0 rows affected (0.71 sec)

샘플 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into selectIntoEquivalentDemo(ClientName,ClientAge) values('Larry',34);
Query OK, 1 row affected (0.13 sec)
mysql> insert into selectIntoEquivalentDemo(ClientName,ClientAge) values('Maxwell',44);
Query OK, 1 row affected (0.06 sec)
mysql> insert into selectIntoEquivalentDemo(ClientName,ClientAge) values('Bob',38);
Query OK, 1 row affected (0.07 sec)
mysql> insert into selectIntoEquivalentDemo(ClientName,ClientAge) values('David',39);
Query OK, 1 row affected (0.09 sec)

저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from selectIntoEquivalentDemo;

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

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 1 | Larry | 34 |
| 2 | Maxwell | 44 |
| 3 | Bob | 38 |
| 4 | David | 39 |
+----------+------------+-----------+
4 rows in set (0.00 sec)

CREATE TABLE AS SELECT 실전 활용

이제 MySQL에서 SELECT INTO에 해당하는 기능인 CREATE TABLE AS SELECT 쿼리를 실행해 보겠습니다. 아래 쿼리는 기존 테이블의 전체 데이터를 복사하여 'Client_information'이라는 새 테이블을 생성합니다.

mysql> create table Client_information AS select *from selectIntoEquivalentDemo;
Query OK, 4 rows affected (0.57 sec)
Records: 4 Duplicates: 0 Warnings: 0

쿼리 결과를 보면 4개의 레코드가 성공적으로 복사되었음을 확인할 수 있습니다.

새 테이블 데이터 검증하기

생성된 새 테이블의 레코드를 조회하여 데이터가 제대로 복사되었는지 확인합니다.

mysql> select *from Client_information;

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

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 1 | Larry | 34 |
| 2 | Maxwell | 44 |
| 3 | Bob | 38 |
| 4 | David | 39 |
+----------+------------+-----------+
4 rows in set (0.00 sec)

정리

MySQL에서는 SELECT INTO 대신 CREATE TABLE ... AS SELECT 구문을 사용하면 됩니다. 이 방법은 백업 테이블 생성, 데이터 마이그레이션, 임시 분석용 테이블 작성 등 다양한 상황에서 유용하게 활용됩니다. 단, 이 방식으로 생성된 테이블은 원본 테이블의 인덱스나 외래 키 제약 조건은 복사되지 않으므로 필요하다면 별도로 추가해야 한다는 점을 기억하세요.