본문 바로가기

DB/mysql

MY SQL 데이터베이스에서 특정 컬럼명 포함된 테이블 찾는 방법

MY SQL에서 특정 컬럼명을 포함한 모든 테이블을 조회 하고 싶을 때가 있는데 그럴땐 아래와 같은 쿼리를 작성하면 됩니다.

 SELECT TABLE_SCHEMA
      , TABLE_NAME
   FROM INFORMATION_SCHEMA.COLUMNS
  WHERE COLUMN_NAME = 'username'
    AND TABLE_SCHEMA = 'your_database_name';

위처럼 INFORMATION_SCHEMA.COLUMNS 뷰는 데이터 베이스의 테이블의 컬럼정보를 제공하며 test라는 컬럼을 column_name에 조건으로 걸어주게된다면 아래와 같이 test라는 컬럼명을 포함한 테이블 명칭이 조회되어 나오게 됩니다.

test를 포함한 테이블조회

 

뿐만아니라 INFORMATION_SCHEMA.COLUMNS  뷰의 컬럼의 내용은 아래와 같습니다.

  1. TABLE_SCHEMA: 컬럼이 속한 데이터베이스의 이름입니다.
  2. TABLE_NAME: 컬럼이 속한 테이블의 이름입니다.
  3. COLUMN_NAME: 컬럼의 이름입니다.
  4. ORDINAL_POSITION: 테이블 내의 컬럼 순서를 나타내는 번호로, 테이블에서 컬럼이 정의된 순서대로 부여됩니다.
  5. COLUMN_DEFAULT: 컬럼의 기본값입니다. 컬럼에 대해 명시적으로 기본값이 설정되지 않았다면 NULL 값을 가집니다.
  6. IS_NULLABLE: 컬럼이 NULL 값을 허용하는지를 나타냅니다. 'YES'는 NULL 가능, 'NO'는 NULL 불가능을 의미합니다.
  7. DATA_TYPE: 컬럼의 데이터 유형(예: VARCHAR, INT, DATE 등).
  8. CHARACTER_MAXIMUM_LENGTH: 문자 유형의 컬럼에 대한 최대 길이를 나타냅니다.
  9. CHARACTER_OCTET_LENGTH: 문자 유형의 컬럼에 대한 최대 바이트 크기를 나타냅니다.
  10. NUMERIC_PRECISION: 숫자 유형의 컬럼에 대한 정밀도를 나타냅니다. 이 값은 숫자의 총 자릿수를 의미합니다.
  11. NUMERIC_SCALE: 숫자 유형의 컬럼에서 소수점 이하의 자릿수를 나타냅니다.
  12. DATETIME_PRECISION: 날짜와 시간 유형의 컬럼에 대한 정밀도를 나타냅니다. 이는 소수점 이하의 정밀도(초 단위)를 나타낼 수 있습니다.
  13. CHARACTER_SET_NAME: 컬럼의 문자 집합 이름입니다.
  14. COLLATION_NAME: 컬럼의 정렬 순서 이름입니다.
  15. COLUMN_TYPE: 컬럼의 전체 데이터 유형을 나타냅니다. 예를 들어, ENUM이나 SET의 가능한 값 등을 포함할 수 있습니다.
  16. COLUMN_KEY: 컬럼이 어떤 인덱스의 일부인지 나타내며, 예를 들어 'PRI'는 기본 키의 일부임을 의미합니다.
  17. EXTRA: 컬럼에 대한 추가 정보, 예를 들어 auto_increment 속성이 설정된 경우 이 정보가 포함됩니다.
  18. PRIVILEGES: 컬럼에 대해 설정된 권한을 나타냅니다.
  19. COLUMN_COMMENT: 컬럼에 대한 추가적인 설명 또는 주석입니다.

출처: https://dev.mysql.com/doc/refman/8.3/en/information-schema-columns-table.html