[Database] MySQL 컬럼명으로 테이블 찾기

Mubby·2022년 5월 2일

데이타베이스(4xx)

목록 보기
3/3
post-thumbnail

MySQL 컬럼명으로 테이블 찾기


개발을 하거나 혹은 프로그램에 문제가 생겼을 때 해당 데이터의 컬럼명만 말고 테이블을 모른다면 어떡할까요?
기술서를 들여다보거나, 테이블을 일일이 열어서 컬럼을 찾아야할수도 있습니다.

MySQL에는 이런 상황에 사용하는 쿼리가 있습니다.

컬럼명으로 테이블 찾는 쿼리입니다.

	SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
	FROM INFORMATION_SCHEMA.COLUMNS
	WHERE COLUMN_NAME='컬럼명';

LIKE 연산자를 사용하여 컬럼명을 포함한 테이블을 찾을 수 있습니다.

	SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
	FROM INFORMATION_SCHEMA.COLUMNS
	WHERE COLUMN_NAME LIKE '%컬럼명%';

여기에 데이터베이스명까지 추가하여 컬럼명과 함께 테이블을 찾습니다.

	SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
	FROM INFORMATION_SCHEMA.COLUMNS
	WHERE COLUMN_NAME LIKE '%컬럼명%' AND TABLE_SCHEMA='데이터베이스명';

위의 쿼리들에서 계속 사용되는 INFORMATION_SCHEMA는 무엇일까요?

INFORMATION_SCHEMA란 MySQL 서버 내에 존재하는 DB의 메타데이터를 모아둔 DB입니다.

  • 메타 데이터(Metadata)란 쉽게 말해 정보에 대한 정보입니다. 데이터의 종류가 너무 많아질 경우 이 또한 목록화가 필요하기 때문에 이러한 요구에 맞춰 생겨난 것이며, 데이터베이스 또는 데이블의 이름, 컬럼의 데이터 타입, 또는 접근 권한과 같은 민감한 정보까지 포함하고 있습니다. 경우에 따라서 데이터 사전(Data Dictionary) 이나 시스템 카탈로그 (System Catalog)로 불립니다.

INFORMATION_SCHEMA 데이터베이스의 특징으로는 INFORMATION_SCHEMA 내의 모든 테이블은 읽기 전용(Read-only)이며, 단순히 조회만 가능합니다.

실제로 이 데이터베이스 내의 테이블은 레코드가 있는 것이 아니라, SQL을 이용해 조회할 때마다 메타 정보를 MySQL 서버의 메모리에서 가져와서 보여줍니다. 그렇기때문에 한꺼번에 많은 테이블을 조회할 경우 시간이 많이 걸릴 수도 있음을 주의해야합니다.


참고사이트 :
STACKOVERFLOW
MySQL 8.0 Reference