MySQL에서 현재 접속해 있는 데이터베이스가 아닌 다른 데이터베이스의 테이블 목록을 조회하고 싶다면 SHOW FULL TABLES 문을 사용하면 됩니다. 이 문은 테이블 이름뿐만 아니라 각 객체가 일반 테이블인지 뷰(VIEW)인지를 나타내는 테이블 유형 정보까지 함께 결과 집합으로 반환해 줍니다.
구문
SHOW FULL TABLES FROM db_name
여기서 db_name은 테이블 목록을 확인하고자 하는 데이터베이스의 이름입니다.
예제
현재 우리는 'query'라는 이름의 데이터베이스를 사용 중입니다. 아래의 MySQL 쿼리를 실행하면 'mysql'이라는 데이터베이스에 포함된 테이블 목록과 각각의 테이블 유형을 확인할 수 있습니다.
mysql> SHOW FULL TABLES FROM mysql; +---------------------------+------------+ | Tables_in_mysql | Table_type | +---------------------------+------------+ | arena | BASE TABLE | | arena1 | BASE TABLE | | columns_priv | BASE TABLE | | dates | VIEW | | dates1 | VIEW | | db | BASE TABLE | | digits | VIEW | | engine_cost | BASE TABLE | | event | BASE TABLE | | func | BASE TABLE | | general_log | BASE TABLE | | gtid_executed | BASE TABLE | | help_category | BASE TABLE | | help_keyword | BASE TABLE | | help_relation | BASE TABLE | | help_topic | BASE TABLE | | innodb_index_stats | BASE TABLE | | innodb_table_stats | BASE TABLE | | ndb_binlog_index | BASE TABLE | | numbers | VIEW | | plugin | BASE TABLE | | proc | BASE TABLE | | procs_priv | BASE TABLE | | proxies_priv | BASE TABLE | | server_cost | BASE TABLE | | servers | BASE TABLE | | slave_master_info | BASE TABLE | | slave_relay_log_info | BASE TABLE | | slave_worker_info | BASE TABLE | | slow_log | BASE TABLE | | tables_priv | BASE TABLE | | test_date | BASE TABLE | | time_zone | BASE TABLE | | time_zone_leap_second | BASE TABLE | | time_zone_name | BASE TABLE | | time_zone_transition | BASE TABLE | | time_zone_transition_type | BASE TABLE | | user | BASE TABLE | +---------------------------+------------+ 38 rows in set (0.01 sec)
결과 해석
위 결과 집합에서 Table_type 열은 두 가지 값을 가질 수 있습니다.
- BASE TABLE: 실제 데이터를 저장하는 일반 테이블을 의미합니다.
- VIEW: 하나 이상의 테이블을 기반으로 정의된 가상 테이블(뷰)을 의미합니다.
또한 특정 패턴과 일치하는 테이블만 조회하고 싶다면 LIKE 절을 함께 사용할 수 있습니다. 예를 들어 아래와 같이 작성하면 이름이 'time'으로 시작하는 테이블만 필터링하여 보여줍니다.
SHOW FULL TABLES FROM mysql LIKE 'time%';
이처럼 SHOW FULL TABLES 문을 활용하면 데이터베이스를 전환하지 않고도 원하는 데이터베이스의 테이블 구성을 손쉽게 파악할 수 있습니다.