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

특정 열 이름으로 MySQL 데이터베이스에서 테이블을 찾는 방법

MySQL 작업 중 특정 열(컬럼)이 포함된 테이블이 어떤 것들이 있는지 확인해야 할 때가 있습니다. 이럴 때 INFORMATION_SCHEMA.COLUMNS 뷰를 활용하면 간단하게 조회할 수 있습니다.

기본 조회 쿼리

다음 예시는 SAMPLE 데이터베이스에서 'email'이라는 열을 가진 테이블 목록을 조회하는 쿼리입니다.

mysql> SELECT DISTINCT TABLE_NAME
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE COLUMN_NAME IN('EMAIL')
    -> AND TABLE_SCHEMA = 'SAMPLE';
+---------------+
| TABLE_NAME    |
+---------------+
| employee      |
| new_student   |
+---------------+
2 rows in set (0.04 sec)

쿼리 구성 요소 살펴보기

  • SELECT DISTINCT TABLE_NAME: 중복 없이 테이블 이름만 조회합니다.
  • FROM INFORMATION_SCHEMA.COLUMNS: MySQL이 제공하는 메타데이터 뷰로, 모든 데이터베이스의 열 정보를 담고 있습니다.
  • WHERE COLUMN_NAME IN('EMAIL'): 열 이름이 'EMAIL'인 행만 필터링합니다. 대소문자 구분은 서버 설정(collation)에 따라 달라질 수 있습니다.
  • AND TABLE_SCHEMA = 'SAMPLE': 검색 범위를 SAMPLE 데이터베이스로 한정합니다. 이 조건이 없으면 서버의 모든 데이터베이스가 검색됩니다.

여러 개의 열로 검색하기

IN 절에 여러 열 이름을 나열하면 해당 열들 중 하나라도 포함하는 테이블을 한 번에 찾을 수 있습니다.

mysql> SELECT DISTINCT TABLE_NAME
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE COLUMN_NAME IN('EMAIL', 'PHONE')
    -> AND TABLE_SCHEMA = 'SAMPLE';

이처럼 INFORMATION_SCHEMA를 활용하면 대규모 데이터베이스에서도 원하는 열을 가진 테이블을 빠르고 정확하게 찾을 수 있습니다.