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

MySQL에서 특정 데이터베이스에 저장된 뷰(View)의 메타데이터 확인 방법

개요

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 조건을 조정하거나 조건을 생략하여 전체 목록을 확인할 수도 있습니다.