MySQL에서 뷰(View)가 어떤 쿼리로 정의되어 있는지 확인하고 싶을 때가 있습니다. 예를 들어, 오랫동안 관리되지 않은 데이터베이스를 인수인계받았거나, 뷰의 동작 방식을 검증해야 할 때 뷰의 실제 정의를 확인하는 것은 매우 유용합니다. 이때 SHOW CREATE VIEW 명령어를 사용하면 됩니다.
SHOW CREATE VIEW 기본 문법
뷰의 정의를 확인하는 기본 문법은 다음과 같습니다.
SHOW CREATE VIEW 뷰이름;
이제 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable -> ( -> StudentName varchar(20) -> ); Query OK, 0 rows affected (0.56 sec)
2단계: 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.13 sec)3단계: 테이블 데이터 조회하기
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+-------------+ | StudentName | +-------------+ | Chris | | Robert | | David | +-------------+ 3 rows in set (0.00 sec)
4단계: 뷰 생성하기
이제 테이블을 기반으로 뷰를 생성하는 쿼리를 실행합니다.
mysql> CREATE VIEW view_DemoTable AS SELECT StudentName from DemoTable; Query OK, 0 rows affected (0.12 sec)
5단계: 뷰의 정의 확인하기
MySQL 뷰가 무엇으로 구성되어 있는지 확인하려면 다음 쿼리를 사용합니다.
mysql> show create view view_DemoTable;
출력 결과
+-------------------+-------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ | View | Create View | character_set_client | collation_connection | +-------------------+-------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ | view_DemoTable | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_DemoTable` AS select `DemoTable`.`StudentName` AS `StudentName` from `DemoTable` | utf8 | utf8_general_ci | +-------------------+-------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ 1 row in set (0.00 sec)
출력 결과에서 확인할 수 있듯이, Create View 컬럼에 해당 뷰를 생성할 때 사용된 실제 SQL 정의가 그대로 표시됩니다. 여기에는 ALGORITHM, DEFINER, SQL SECURITY 같은 뷰의 속성 정보도 함께 포함되어 있습니다. 또한 character_set_client와 collation_connection 컬럼을 통해 뷰 생성 시 적용된 문자셋과 콜레이션 정보도 확인할 수 있습니다.
6단계: 뷰 데이터 조회하기
마지막으로 생성된 뷰의 레코드를 확인해 보겠습니다.
mysql> select *from view_DemoTable;
출력 결과
+-------------+ | StudentName | +-------------+ | Chris | | Robert | | David | +-------------+ 3 rows in set (0.05 sec)
뷰를 조회하면 원본 테이블인 DemoTable의 데이터가 동일하게 출력되는 것을 확인할 수 있습니다. 이처럼 SHOW CREATE VIEW 명령어를 활용하면 뷰의 내부 정의를 손쉽게 파악할 수 있어, 데이터베이스 유지보수와 디버깅 작업에 큰 도움이 됩니다.