ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • sql 특정 컬럼이 존재하는 테이블 찾기
    학습/SQL 2019. 12. 31. 16:30

    DB에 저장되어있는 테이블이 너무 많은데 특정 컬럼이 존재하는 테이블만을 검색하고 싶은 경우가 종종 있다.

    사실 이런 작업은 ERD가 구축되어있다면 쉽게 확인할 수 있을 것이나, 여러 프로젝트 경험상 대기업이고 공기업이고간에 ERD가 제대로 구축되어 있는 꼴을 본 적이 없다. 제대로 된 ERD가 존재한다고 하더라도 기업의 자산이자 DB 설계도나 다름없는 정보를 쉽게 내주지도 않는다.

    따라서 프로젝트를 착수하면 데이터에 대한 사전 지식도 거의 없는데 심지어 무슨 테이블을 봐야 하는지도 모르는 경우가 있어서(심지어 본인들 데이터를 본인이 모르는 경우도 굉장히 많다) 이런 경우에는 DB를 다 뜯어서 프로젝트 진행을 위해 필요한 컬럼을 정의하는 것부터 시작해야 한다.

     

    가령 KEY로 사용되는 컬럼을 찾은 경우, 해당 KEY 컬럼이 존재하는 모든 테이블을 무엇인지 파악하는 것이 정말 중요한데 서로 연결되어있는 여러 테이블간의 관계를 파악하고 모델링에 필요한 feature를 찾는데 도움을 주기 때문이다. 즉, 특정 컬럼이 존재하는 테이블을 파악하는 방법을 알고 있어야 한다는 것이다.

     

    본 포스팅에서는 위처럼 DB를 뜯어보는 과정에서 정말 많이 사용하고 많은 도움을 주는 쿼리문 두 가지를 소개한다. 매우 기본적인 쿼리문이지만 모른다면 너무나도 답답한 쿼리문이므로 참고하여 분석가로서 작업능률을 조금이나마 향상하는데 기여할 수 있길 바란다.

     


     

    1. `컬럼1`이 존재하는 테이블 찾기

    SELECT DISTINCT TABLE_NAME
        FROM ALL_TAB_COLUMNS
        WHERE COLUMN_NAME=`컬럼1`
        ORDER BY TABLE_NAME

     

     

     

    2. `컬럼1`과 `컬럼2`가 동시에 존재하는 테이블 찾기

    SELECT DISTINCT T1.TABLE_NAME
        FROM (SELECT DISTINCT TABLE_NAME
                    FROM ALL_TAB_COLUMNS
                    WHERE COLUMN_NAME=`컬럼1`
                    ORDER BY TABLE_NAME) T1
        JOIN (SELECT DISTINCT TABLE_NAME
                    FROM ALL_TAB_COLUMNS
                    WHERE COLUMN_NAME=`컬럼2`
                    ORDER BY TABLE_NAME) T2
        ON T1.TABLE_NAME=T2.TABLE_NAME
        ORDER BY T1.TABLE_NAME;

     

    '학습 > SQL' 카테고리의 다른 글

    SQL을 활용한 데이터 분석 사례  (0) 2020.02.14
    MySQL에 csv 임포트 - MySQL Workbench  (2) 2019.08.01

    댓글

Designed by Tistory.