MySQL에서 뷰(View)가 존재하지 않을 때만 생성하는 방법
MySQL에서 뷰가 아직 존재하지 않는 경우에만 새로운 뷰를 생성하려면 CREATE OR REPLACE VIEW 구문을 사용할 수 있습니다. 이 구문은 뷰가 이미 존재하면 기존 뷰를 대체(교체)하고, 존재하지 않으면 새로 생성하기 때문에 별도의 조건 검사 없이도 안전하게 뷰를 만들 수 있다는 장점이 있습니다.
CREATE OR REPLACE VIEW yourViewName AS SELECT * FROM yourTableName;
위 구문을 실제로 이해하기 위해 예제 테이블을 하나 만들어 보겠습니다.
1단계: 테이블 생성
다음 쿼리로 테이블을 생성합니다.
mysql> create table createViewDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.58 sec)
2단계: 데이터 삽입
INSERT 명령어를 사용하여 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into createViewDemo(Name) values('John');
Query OK, 1 row affected (0.22 sec)
mysql> insert into createViewDemo(Name) values('Carol');
Query OK, 1 row affected (0.15 sec)
mysql> insert into createViewDemo(Name) values('Bob');
Query OK, 1 row affected (0.15 sec)
mysql> insert into createViewDemo(Name) values('Sam');
Query OK, 1 row affected (0.14 sec)3단계: 테이블 데이터 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from createViewDemo;
실행 결과는 다음과 같습니다.
+----+-------+
| Id | Name |
+----+-------+
| 1 | John |
| 2 | Carol |
| 3 | Bob |
| 4 | Sam |
+----+-------+
4 rows in set (0.00 sec)
4단계: 뷰 생성
이제 뷰가 존재하지 않을 경우에만 뷰를 생성하는 쿼리입니다.
mysql> CREATE OR REPLACE VIEW New_ViewDemo AS select *from createViewDemo;
Query OK, 0 rows affected (0.13 sec)
5단계: 뷰 데이터 확인
생성된 뷰의 레코드를 확인해 보겠습니다.
mysql> select *from New_ViewDemo;
출력 결과는 다음과 같습니다.
+----+-------+
| Id | Name |
+----+-------+
| 1 | John |
| 2 | Carol |
| 3 | Bob |
| 4 | Sam |
+----+-------+
4 rows in set (0.02 sec)
이처럼 CREATE OR REPLACE VIEW를 활용하면 뷰의 존재 여부를 미리 확인하는 추가 작업 없이도 뷰를 손쉽게 생성하거나 최신 상태로 업데이트할 수 있습니다. 반복적인 스크립트 실행 환경에서 특히 유용하게 사용되는 구문이니 꼭 기억해 두시기 바랍니다.