글을 작성하게 된 계기
회사에서 팀원들에게 특정 칼럼이 어느 테이블에 있는지 매 번 묻기 미안 했고, 이를 해결한 방법을 정리하기 위해 글을 작성하게 되었습니다.
1. 문제 상황
현재 회사는 수 백 개의 테이블 이 존재하는데요, 특정 칼럼이 어느 테이블에 있는지 찾기가 정말 어렵습니다. 따라서 회사에 오래 다녔거나, 프로젝트의 문맥을 잘 알고 있는 팀원들 에게 테이블을 물어보는 경우가 많았습니다.
묻는 것도 한 두 번이지 바쁜 사람 붙잡고 매 번 묻기 미안했죠… Steve, Jay, Leslie 이 자리를 빌어 감사를 전합니다. 🙇
매 번 묻기가 미안해서 수 백 개의 테이블을 뒤지면서 원하는 정보를 찾고 있었는데요, 이러다보니 칼럼 하나를 찾는데 반나절 이 가기도 했죠. 즉, 원하는 테이블을 빠르게 찾아 비즈니스에 집중 하고 싶었습니다.
이름이 같은 칼럼이 여러 테이블에 존재할 때는 정말 죽을 맛이었죠… 안타깝다 못해 눈물이 났습니다. 🥲
2. 문제 해결
MySQL에서는 데이터베이스 내부 구조에 대한 다양한 정보를 확인할 수 있도록 INFORMATION_SCHEMA 라는 시스템 전용 데이터베이스를 제공합니다. 이 데이터베이스는 서버에 존재하는 모든 데이터베이스의 구조 정보 를 담고 있습니다.
이를 이용해 특정 칼럼이 어느 테이블에 있는지 찾는 쿼리를 작성할 수 있습니다. 다음과 같이요.
1
2
3
4
5
6
7
8
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME LIKE '%COLUMN_NAME%'
물론 이렇게 원하는 정보를 찾는다고 모든게 해결되지는 않는데요, 이름이 비슷한 칼럼이 여러 테이블에 존재할 수 있기 때문 입니다. 하지만 이렇게 찾은 정보를 통해 팀원들에게 조금 더 구체적인 질문 을 할 수 있고, 또 운이 좋다면 한 번에 원하는 값을 찾아 비즈니스에 집중 할 수 있죠. 정말 좋습니다.
a, b, c, d 네 개의 테이블에 x라는 칼럼이 존재하던데, 어떤 테이블이 제가 찾고자 하는 테이블일까요?
3. 정리
안타깝지만 별 내용은 없는데요, 그냥 회사 다니면서 이런 문제를 겪고, 이를 해결한 방법을 정리해 보았습니다. 테이블이 많은데, 질문하기 미안할 때 이 방법을 사용해보시죠.