MySQL에서 특정 데이터베이스에 저장된 뷰(View) 목록을 확인해야 하는 경우가 종종 있습니다. 예를 들어 데이터베이스를 유지보수하거나 다른 개발자가 만든 뷰를 파악할 때 유용합니다. 이 글에서는 'query'라는 이름의 데이터베이스를 예시로, 뷰 목록을 조회하는 세 가지 방법을 소개합니다.
1. information_schema.TABLES 활용하기
MySQL은 데이터베이스 메타데이터를 information_schema에 저장합니다. TABLE_TYPE이 'VIEW'인 테이블만 필터링하면 해당 데이터베이스의 뷰 목록을 손쉽게 얻을 수 있습니다.
mysql> SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_TYPE LIKE 'view' AND TABLE_SCHEMA LIKE 'query'; +-----------------------------+ | TABLE_NAME | +-----------------------------+ | customer_view | | first_view | | info | | info_less | | view_detail | | view_student_detail | | view_student_detail_columns | +-----------------------------+ 7 rows in set (0.01 sec)
위 쿼리는 'query' 데이터베이스에 존재하는 7개의 뷰 이름만 깔끔하게 출력합니다.
2. SHOW FULL TABLES 문 사용하기
가장 간단한 방법은 MySQL에서 기본 제공하는 SHOW FULL TABLES 구문입니다. WHERE 절로 TABLE_TYPE이 'VIEW'인 항목만 걸러내면 됩니다.
mysql> SHOW FULL TABLES IN query WHERE TABLE_TYPE LIKE 'VIEW'; +-----------------------------+------------+ | Tables_in_query | Table_type | +-----------------------------+------------+ | customer_view | VIEW | | first_view | VIEW | | info | VIEW | | info_less | VIEW | | view_detail | VIEW | | view_student_detail | VIEW | | view_student_detail_columns | VIEW | +-----------------------------+------------+ 7 rows in set (0.01 sec)
이 방법은 뷰 이름과 함께 테이블 유형(VIEW)도 함께 표시되어 한눈에 파악하기 좋습니다.
3. 스키마 정보까지 함께 조회하기
여러 데이터베이스를 다룰 때는 어떤 스키마에 속한 뷰인지 함께 확인하는 것이 편리합니다. information_schema.tables에서 TABLE_SCHEMA 컬럼을 추가로 조회하면 됩니다.
mysql> SELECT TABLE_SCHEMA, TABLE_NAME
-> FROM information_schema.tables
-> WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA = 'query';
+--------------+-----------------------------+
| TABLE_SCHEMA | TABLE_NAME |
+--------------+-----------------------------+
| query | customer_view |
| query | first_view |
| query | info |
| query | info_less |
| query | view_detail |
| query | view_student_detail |
| query | view_student_detail_columns |
+--------------+-----------------------------+
7 rows in set (0.05 sec)
정리
세 가지 방법 모두 동일한 결과를 반환하지만 상황에 따라 적합한 방식이 다릅니다.
- 간단한 확인:
SHOW FULL TABLES구문이 가장 직관적입니다. - 메타데이터 활용: 다른 조건과 결합하거나 프로그래밍적으로 처리할 때는
information_schema조회가 유연합니다. - 스키마 구분이 필요한 경우:
TABLE_SCHEMA컬럼을 함께 조회하면 여러 데이터베이스 환경에서도 혼동 없이 관리할 수 있습니다.
참고로, 뷰의 실제 정의(CREATE VIEW 문)까지 확인하고 싶다면 SHOW CREATE VIEW 뷰이름; 명령어를 사용하면 됩니다.