개요
MySQL에서는 INFORMATION_SCHEMA 데이터베이스의 VIEWS 테이블을 통해 뷰(View)에 대한 메타데이터, 즉 뷰와 관련된 각종 정보를 조회할 수 있습니다. 이 테이블에는 뷰의 정의문, 생성자, 업데이트 가능 여부 등 다양한 정보가 저장되어 있습니다.
설명을 위해 'Info'라는 이름의 뷰를 예로 들어 살펴보겠습니다.
뷰 메타데이터 조회하기
다음 쿼리는 'query' 데이터베이스에 저장된 'Info'라는 뷰의 메타데이터를 조회합니다.
mysql> SELECT * from INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'Info' AND TABLE_SCHEMA = 'query'\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: query
TABLE_NAME: info
VIEW_DEFINITION:select`query`.`student_info`.`id`AS`ID`,`query`.`student_info`.`Name` AS `NAME`,`query`.`student_info`.`Subject` AS `SUBJECT`,`query`.`student_info`.`Address` AS `ADDRESS` from `query`.`student_info`
CHECK_OPTION: NONE
IS_UPDATABLE: YES
DEFINER: root@localhost
SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: cp850
COLLATION_CONNECTION: cp850_general_ci
1 row in set (0.00 sec)주요 컬럼 설명
- TABLE_CATALOG: 뷰가 속한 카탈로그 이름으로, 일반적으로 'def' 값이 표시됩니다.
- TABLE_SCHEMA: 해당 뷰가 저장된 데이터베이스(스키마)의 이름입니다.
- TABLE_NAME: 뷰의 이름입니다.
- VIEW_DEFINITION: 해당 뷰를 정의하는 SELECT 문으로, 실제 뷰의 내용을 확인할 수 있습니다.
- CHECK_OPTION: 뷰 생성 시 지정한 CHECK OPTION 값입니다(NONE, LOCAL, CASCADED 중 하나).
- IS_UPDATABLE: 해당 뷰가 업데이트 가능한지 여부를 나타냅니다(YES/NO).
- DEFINER: 뷰를 생성한 사용자 계정입니다.
- SECURITY_TYPE: 뷰의 보안 유형으로, DEFINER 또는 INVOKER 값이 설정됩니다.
- CHARACTER_SET_CLIENT / COLLATION_CONNECTION: 뷰 생성 시 사용된 클라이언트 문자셋과 연결 콜레이션 정보입니다.
마무리
이처럼 INFORMATION_SCHEMA.VIEWS 테이블을 활용하면 별도의 도구 없이 SQL 쿼리만으로 특정 데이터베이스에 존재하는 뷰의 구조와 정의, 보안 설정 등 상세 메타데이터를 손쉽게 확인할 수 있습니다. 여러 뷰를 한 번에 조회하고 싶다면 WHERE 조건을 조정하거나 조건을 생략하여 전체 목록을 확인할 수도 있습니다.