INFORMATION_SCHEMA.COLUMNS로 테이블 이름과 컬럼 함께 조회하기
MySQL에서 특정 데이터베이스에 어떤 테이블이 있고, 각 테이블에 어떤 컬럼(열)이 포함되어 있는지 한눈에 확인하고 싶다면 INFORMATION_SCHEMA.COLUMNS 테이블을 활용하면 됩니다. 이 시스템 뷰에는 MySQL 서버가 관리하는 모든 스키마, 테이블, 컬럼의 메타데이터가 저장되어 있으므로, 별도의 관리 도구 없이 SQL 쿼리만으로 데이터베이스 구조를 손쉽게 파악할 수 있습니다.
기본 문법
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'yourDatabaseName';
TABLE_SCHEMA 조건에 조회하려는 데이터베이스 이름을 지정하면 해당 데이터베이스에 속한 모든 테이블과 컬럼 목록이 반환됩니다. DISTINCT 키워드를 사용하여 중복된 행을 제거하는 것이 핵심입니다.
실행 예제
'sample'이라는 이름의 데이터베이스가 있다고 가정하고, 테이블 이름과 컬럼 이름을 함께 조회하는 실제 쿼리는 다음과 같습니다.
mysql> SELECT DISTINCT TABLE_NAME, COLUMN_NAME
-> FROM INFORMATION_SCHEMA.COLUMNS
-> WHERE TABLE_SCHEMA = 'sample';
출력 결과
쿼리를 실행하면 아래와 같이 테이블 이름(TABLE_NAME)과 컬럼 이름(COLUMN_NAME)이 한 줄씩 짝을 이루어 출력됩니다.
+------------------------+---------------+
| TABLE_NAME | COLUMN_NAME |
+------------------------+---------------+
| aggregatefunctiondemo | UserId |
| aggregatefunctiondemo | UserName |
| allrecordsexceptlastone| UserAge |
| allrecordsexceptlastone| UserName |
| averagestring | Value |
| backtick_symboldemo | FileName |
| coursedemo | CourseId |
| coursedemo | CourseName |
| coursedemo | StudentName |
| employee | departmentID |
| employee | employeeID |
| employee | Name |
| productstock | ProductName |
| productstock | ProductPrice |
| userinformation | UserId |
| userinformation | UserName |
+------------------------+---------------+
위 결과는 일부 발췌한 것으로, 실제 실행 결과는 데이터베이스에 포함된 테이블과 컬럼의 개수만큼 더 많은 행으로 출력됩니다.
참고: SHOW 명령어와의 비교
테이블 목록만 간단히 보려면 SHOW TABLES;, 특정 테이블의 컬럼 정보만 확인하려면 SHOW COLUMNS FROM 테이블명; 또는 DESCRIBE 테이블명;을 사용할 수도 있습니다. 다만 여러 테이블의 컬럼 정보를 한 번에 조회하거나, WHERE 절로 원하는 조건(예: 특정 컬럼명 검색)을 걸어 필터링하려면 INFORMATION_SCHEMA를 직접 조회하는 방식이 훨씬 유연하고 강력합니다.