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

MySQL에서 뷰(View)를 이용해 테이블을 생성하는 방법

MySQL에서 뷰(View)를 기반으로 새로운 테이블을 만들고 싶다면 CREATE TABLE ... SELECT 구문을 활용하면 됩니다. 뷰에 저장된 데이터를 그대로 복사하여 실제 물리 테이블로 생성할 수 있어, 데이터 백업이나 스냅샷 생성 시 매우 유용합니다.

기본 문법

뷰로부터 테이블을 생성하는 기본 문법은 다음과 같습니다.

CREATE TABLE yourTableName SELECT * FROM yourViewName;

실습 예제

1단계: 원본 테이블 생성

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

mysql> CREATE TABLE DemoTable830(Name VARCHAR(100));
Query OK, 0 rows affected (0.91 sec)

2단계: 데이터 삽입

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

mysql> INSERT INTO DemoTable830 VALUES('Chris');
Query OK, 1 row affected (0.41 sec)
mysql> INSERT INTO DemoTable830 VALUES('Robert');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable830 VALUES('David');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable830 VALUES('Mike');
Query OK, 1 row affected (0.16 sec)

3단계: 데이터 확인

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

mysql> SELECT * FROM DemoTable830;

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

+--------+
| Name   |
+--------+
| Chris  |
| Robert |
| David  |
| Mike   |
+--------+
4 rows in set (0.00 sec)

뷰(View) 생성하기

이제 위 테이블을 기반으로 뷰를 생성합니다.

mysql> CREATE VIEW table_view AS SELECT * FROM DemoTable830;
Query OK, 0 rows affected (0.39 sec)

뷰로부터 테이블 생성하기

뷰가 준비되었으니, 이 뷰를 이용해 새로운 테이블을 생성해 보겠습니다. 아래 쿼리를 실행하면 뷰의 데이터 전체가 새 테이블에 복사됩니다.

mysql> CREATE TABLE DemoTable831 SELECT * FROM table_view;
Query OK, 4 rows affected (1.64 sec)
Records: 4 Duplicates: 0 Warnings: 0

결과 확인

뷰로부터 생성된 테이블의 레코드를 조회하여 정상적으로 데이터가 복사되었는지 확인합니다.

mysql> SELECT * FROM DemoTable831;

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

+--------+
| Name   |
+--------+
| Chris  |
| Robert |
| David  |
| Mike   |
+--------+
4 rows in set (0.00 sec)

정리 및 참고 사항

이처럼 CREATE TABLE ... SELECT 구문을 사용하면 뷰의 데이터를 손쉽게 새 테이블로 복사할 수 있습니다. 다만 몇 가지 주의할 점이 있습니다.

인덱스 미복원: 이 방식으로 생성된 테이블은 원본 테이블의 인덱스(PRIMARY KEY, UNIQUE 등)와 AUTO_INCREMENT 속성이 자동으로 복사되지 않습니다. 필요하다면 생성 후 별도로 ALTER TABLE 문을 사용해 인덱스를 추가해야 합니다.

데이터 타입 유지: 컬럼의 데이터 타입과 NULL 여부는 뷰를 통해 그대로 상속되므로, 대부분의 경우 스키마 구조는 유지됩니다.

LIKE 구문과의 차이: 테이블 구조만 복사하고 싶다면 CREATE TABLE ... LIKE 구문을 사용하는 것이 좋으며, 데이터까지 함께 복사하려면 이번 예제처럼 SELECT 절을 활용하면 됩니다.