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

MySQL 데이터베이스의 모든 테이블에 쿼리 적용하는 방법

INFORMATION_SCHEMA.TABLES를 활용한 테이블별 쿼리 적용

데이터베이스 내의 각 테이블에 MySQL 쿼리를 적용하려면 INFORMATION_SCHEMA.TABLES를 활용할 수 있습니다. 이 시스템 뷰는 현재 MySQL 서버에 존재하는 모든 데이터베이스와 테이블의 메타데이터를 담고 있어, 테이블 정보를 손쉽게 조회하고 집계할 수 있습니다.

기본 문법

다음은 INFORMATION_SCHEMA.TABLES를 사용하여 특정 데이터베이스의 전체 테이블 행 수를 합산하는 기본 문법입니다.

SELECT SUM(TABLE_ROWS) AS anyAliasName
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = yourDatabaseName;

실제 실행 예제

위 문법을 실제로 적용해 보겠습니다. 아래 예제에서는 DATABASE() 함수를 사용하여 현재 선택된 데이터베이스를 동적으로 지정합니다. 이렇게 하면 데이터베이스 이름을 하드코딩하지 않아도 되므로 더욱 유연하게 활용할 수 있습니다.

mysql> SELECT SUM(TABLE_ROWS) AS Total
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE();

실행 결과

쿼리를 실행하면 다음과 같은 결과가 출력됩니다. 현재 데이터베이스에 있는 모든 테이블의 행 수가 하나의 값으로 집계되는 것을 확인할 수 있습니다.

+-------+
| Total |
+-------+
| 1666  |
+-------+
1 row in set (0.01 sec)

참고 사항

TABLE_ROWS 컬럼의 값은 InnoDB 테이블의 경우 근사치(approximate value)로 반환될 수 있습니다. 정확한 행 수가 필요하다면 각 테이블에 대해 COUNT(*)를 직접 실행하는 것이 좋습니다. 또한 WHERE 절의 TABLE_SCHEMA 조건에 원하는 데이터베이스 이름을 직접 입력하면 특정 데이터베이스만 대상으로 조회할 수도 있습니다.