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

열 이름만으로 MySQL 데이터베이스에서 해당 열이 포함된 테이블 찾는 방법

MySQL에서 특정 열이 포함된 테이블 찾기

여러 개의 데이터베이스와 테이블이 운영되는 환경에서는 특정 열(Column)이 어느 테이블에 들어 있는지 확인해야 하는 경우가 종종 발생합니다. 이럴 때 테이블을 하나씩 열어볼 필요 없이, information_schema.columns 뷰를 조회하고 COLUMN_NAME 조건을 활용하면 단 한 번의 쿼리로 원하는 열의 위치를 파악할 수 있습니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
-> (
-> CustomerId int,
-> CustomerName varchar(20),
-> CustomerCountryName varchar(100)
-> );
Query OK, 0 rows affected (1.05 sec)

조회 쿼리 작성하기

다음은 'CustomerCountryName'이라는 열이 현재 MySQL 서버의 어떤 테이블들에 존재하는지 확인하는 쿼리입니다.

mysql> select * from information_schema.columns
where COLUMN_NAME = 'CustomerCountryName';

실행 결과

쿼리를 실행하면 해당 열을 포함한 모든 테이블의 상세 정보가 출력됩니다. 주요 결과만 정리하면 다음과 같습니다.

+--------------+--------------+---------------------+-------------+
| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | COLUMN_TYPE |
+--------------+--------------+---------------------+-------------+
| sample | demotable189 | CustomerCountryName | varchar(100)|
| web | DemoTable | CustomerCountryName | varchar(20) |
| web | DemoTable | CustomerCountryName | varchar(100)|
+--------------+--------------+---------------------+-------------+
3 rows in set (0.68 sec)

실행 결과에서 확인할 수 있듯이 'CustomerCountryName' 열은 sample과 web이라는 서로 다른 데이터베이스(스키마)에 걸쳐 총 3개의 테이블에 존재합니다.

응용: 특정 데이터베이스로 검색 범위 좁히기

전체 서버가 아닌 특정 데이터베이스 내에서만 검색하고 싶다면 TABLE_SCHEMA 조건을 추가하면 됩니다. 필요한 열만 선택하면 결과도 훨씬 깔끔하게 확인할 수 있습니다.

mysql> SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.columns
WHERE COLUMN_NAME = 'CustomerCountryName'
AND TABLE_SCHEMA = 'web';

이처럼 information_schema를 활용하면 대규모 데이터베이스 환경에서도 특정 열이 사용된 위치를 빠르고 정확하게 추적할 수 있습니다.