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

MySQL 데이터베이스의 모든 테이블을 한 줄로 출력하는 방법


MySQL에서 특정 데이터베이스에 포함된 모든 테이블 이름을 한 줄로 확인하려면 information_schema.tables를 활용하면 됩니다. 이 시스템 뷰에는 서버의 모든 테이블 메타데이터가 저장되어 있으므로, WHERE 절에 데이터베이스 이름을 지정하면 원하는 데이터베이스의 테이블만 정확하게 조회할 수 있습니다.

쿼리 작성 방법

group_concat() 함수로 테이블 이름들을 하나의 문자열로 묶고, table_schema 조건으로 대상 데이터베이스를 지정합니다. 아래 예시는 'web' 데이터베이스의 모든 테이블을 한 줄에 출력하는 쿼리입니다.

mysql> select group_concat(table_name) from information_schema.tables where table_schema='web';

실행 결과

쿼리를 실행하면 테이블 이름들이 쉼표(,)로 구분된 형태로 한 줄에 나타납니다.

+------------------------------------------------------------------+
| group_concat(table_name)                                         |
+------------------------------------------------------------------+
| demo_table725,demotabe619,demotabe620,demotable211,demotable212,
demotable213,demotable214,demotable215,demotable216,demotable217,
...(이후 테이블 이름들이 계속 이어짐)...                              |
+------------------------------------------------------------------+
1 row in set, 1 warning (0.01 sec)

주의: 결과가 잘리는 경우 (1 warning)

실행 결과에 "1 warning"이 함께 표시되는 이유는 group_concat() 함수의 기본 최대 길이인 group_concat_max_len이 1024바이트로 제한되어 있기 때문입니다. 테이블 개수가 많으면 문자열 끝부분이 잘릴 수 있으므로, 필요하다면 세션 변수 값을 늘려 해결할 수 있습니다.

mysql> SET SESSION group_concat_max_len = 1000000;

SHOW TABLES와의 차이점

일반적으로 SHOW TABLES 명령으로도 테이블 목록을 확인할 수 있지만, 이 경우 각 테이블이 별도의 행으로 출력됩니다. 반면 위 방식은 전체 목록을 하나의 문자열로 압축해 보여주므로, 로그 기록이나 다른 쿼리 결과와 결합해야 할 때 특히 유용합니다.