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

현재 사용 중인 데이터베이스가 아닌 다른 데이터베이스의 MySQL 테이블 목록과 테이블 유형 확인하는 방법

MySQL에서 현재 사용 중인 데이터베이스가 아니라 다른 데이터베이스에 속한 테이블 목록과 각 테이블의 유형까지 한 번에 확인하려면 SHOW FULL TABLES 문을 사용하면 됩니다. 이 문은 단순히 테이블 이름만 보여주는 SHOW TABLES와 달리, 해당 객체가 일반 테이블인지 뷰(VIEW)인지까지 함께 출력해 주기 때문에 매우 유용합니다.

기본 구문

SHOW FULL TABLES IN db_name

여기서 db_name은 테이블 목록을 조회하고자 하는 데이터베이스의 이름입니다. USE 문으로 데이터베이스를 전환할 필요 없이 IN 키워드 뒤에 대상 데이터베이스명을 직접 지정할 수 있다는 점이 가장 큰 장점입니다.

실전 예제

현재 'query'라는 이름의 데이터베이스를 사용 중이라고 가정해 보겠습니다. 이 상태에서 아래 쿼리를 실행하면 'mysql' 데이터베이스에 포함된 모든 테이블과 뷰의 목록, 그리고 각 객체의 유형(Table_type)을 확인할 수 있습니다.

mysql> SHOW FULL TABLES IN 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 절로 결과 필터링하기

테이블 개수가 많은 경우 LIKE 절을 함께 사용하면 특정 패턴과 일치하는 테이블만 깔끔하게 조회할 수 있습니다.

SHOW FULL TABLES IN mysql LIKE 'time%';

이 쿼리는 이름이 'time'으로 시작하는 테이블(time_zone, time_zone_name 등)만 반환합니다.

INFORMATION_SCHEMA를 활용한 대안

더 세밀한 조건 검색이 필요하다면 INFORMATION_SCHEMA.TABLES 뷰를 조회하는 방법도 있습니다. WHERE 절을 자유롭게 활용할 수 있어 복잡한 필터링에 적합합니다.

SELECT TABLE_NAME, TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'mysql';

정리하면, 다른 데이터베이스의 테이블 목록과 유형을 빠르게 확인할 때는 SHOW FULL TABLES IN db_name이 가장 간편하며, 조건 기반의 상세 조회가 필요할 때는 INFORMATION_SCHEMA를 활용하는 것이 좋습니다.