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

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

MySQL에서는 CREATE TABLE ... AS SELECT 구문을 사용하면 뷰(View)를 기반으로 손쉽게 새 테이블을 생성할 수 있습니다. 기본 문법은 다음과 같습니다.

CREATE TABLE yourTableName AS SELECT
yourColumnName1,yourColumnName2,yourColumnName3,........N from yourViewName;

위 쿼리를 실행하려면 먼저 원본 테이블을 생성하고, 그 위에 뷰를 만든 뒤, 마지막으로 뷰를 이용해 테이블을 생성하면 됩니다. 단계별로 자세히 살펴보겠습니다.

1단계: 원본 테이블 생성하기

먼저 뷰의 기반이 될 테이블을 생성해야 합니다. 아래 쿼리로 테이블을 만들어 보겠습니다.

mysql> create table StuedntInformation
    -> (
    -> Id int,
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.54 sec)

2단계: 뷰(View) 생성하기

테이블 생성이 완료되면 해당 테이블 위에 뷰를 생성합니다. 뷰 생성 쿼리는 다음과 같습니다.

mysql> CREATE VIEW view_Student AS SELECT Id,Name from StuedntInformation;
Query OK, 0 rows affected (0.11 sec)

이제 'view_Student'라는 이름의 뷰가 생성되었습니다. SHOW 명령어를 사용하면 뷰의 정의(DDL)를 확인할 수 있습니다.

mysql> SHOW CREATE VIEW view_Student;

출력 결과

+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View         | Create View                                                                                                                                                                                        | character_set_client | collation_connection |
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| view_student | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_student` AS select `stuedntinformation`.`Id` AS `Id`,`stuedntinformation`.`Name` AS `Name` from `stuedntinformation` | utf8                 | utf8_general_ci      |
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)

3단계: 뷰를 이용해 새 테이블 생성하기

이제 앞에서 만든 'view_Student' 뷰를 사용하여 새 테이블을 생성합니다. 뷰 기반 테이블 생성 쿼리는 다음과 같습니다.

mysql> CREATE TABLE CreatingTableUsingViewStudent AS
    -> select Id,Name from view_Student;

Query OK, 0 rows affected (0.50 sec)
Records: 0 Duplicates: 0 Warnings: 0

4단계: 생성된 테이블 구조 확인하기

새로 생성된 테이블의 DDL 역시 SHOW 명령어로 확인할 수 있습니다.

mysql> show create table CreatingTableUsingViewStudent;

출력 결과

+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                         | Create Table                                                                                                                                                                      |
+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CreatingTableUsingViewStudent | CREATE TABLE `creatingtableusingviewstudent` ( `Id` int(11) DEFAULT NULL, `Name` varchar(100) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

참고 사항

CREATE TABLE ... AS SELECT 방식은 데이터와 컬럼 구조를 그대로 복사하지만, 원본 테이블에 설정된 인덱스(PRIMARY KEY 포함), 외래 키, AUTO_INCREMENT 속성 등은 복사되지 않습니다. 따라서 키나 인덱스가 필요한 경우에는 복사 후 ALTER TABLE 문으로 직접 추가해 주어야 합니다. 또한 뷰에 정의된 조건(WHERE 절 등)이 있다면 그 조건에 맞는 결과 데이터만 새 테이블에 저장됩니다.