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

CREATE TABLE 없이 SELECT 문만으로 MySQL 임시 테이블 생성하는 방법

MySQL에서 SELECT 문을 활용해 별도의 CREATE TABLE 문 없이 임시 테이블을 만들려면 TEMPORARY 키워드를 사용하면 됩니다.

임시 테이블(Temporary Table)의 특징

임시 테이블은 현재 세션(session)에서만 보이며, 세션이 종료되면 자동으로 삭제됩니다. 또한 서로 다른 두 세션이 같은 이름의 임시 테이블을 각각 사용할 수 있다는 점도 유용합니다.

1. 원본 테이블 생성하기

먼저 예제에 사용할 일반 테이블을 생성합니다.

mysql> create table MyTableDemo
    -> (
    -> id int,
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.69 sec)

2. 데이터 삽입하기

테스트용 레코드를 몇 개 삽입합니다.

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

mysql> insert into MyTableDemo values(2,'Carol');
Query OK, 1 row affected (0.13 sec)

mysql> insert into MyTableDemo values(3,'Bob');
Query OK, 1 row affected (0.12 sec)

3. 전체 레코드 조회하기

삽입된 모든 데이터를 확인해 보겠습니다.

mysql> select * from MyTableDemo;

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

+------+-------+
| id   | Name  |
+------+-------+
|    1 | John  |
|    2 | Carol |
|    3 | Bob   |
+------+-------+
3 rows in set (0.00 sec)

4. 임시 테이블 생성 문법

SELECT 결과를 그대로 임시 테이블로 만드는 기본 문법은 아래와 같습니다.

CREATE TEMPORARY TABLE IF NOT EXISTS yourTemporaryTableName AS (SELECT * FROM yourTableName);

IF NOT EXISTS 옵션을 함께 사용하면 동일한 이름의 임시 테이블이 이미 존재할 때 발생하는 오류를 방지할 수 있습니다.

5. 실제 쿼리 실행 예시

위 문법을 실제로 적용해 보겠습니다.

mysql> CREATE TEMPORARY TABLE IF NOT EXISTS MyTemporaryTableDemo AS (SELECT * FROM MyTableDemo);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

6. 데이터 복사 확인하기

모든 레코드가 정상적으로 복사되었는지 확인합니다.

mysql> select * from MyTemporaryTableDemo;

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

+------+-------+
| id   | Name  |
+------+-------+
|    1 | John  |
|    2 | Carol |
|    3 | Bob   |
+------+-------+
3 rows in set (0.00 sec)

정리

이처럼 CREATE TEMPORARY TABLE ... AS SELECT 구문을 사용하면 복잡한 테이블 정의 과정 없이, 기존 테이블의 구조와 데이터를 한 번에 복사한 임시 테이블을 손쉽게 만들 수 있습니다. 복잡한 조인 결과를 잠시 저장해 두고 분석할 때 특히 유용합니다.