MySQL에서 특정 테이블의 컬럼(필드) 이름과 해당 데이터 유형을 한 번에 확인하고 싶다면 INFORMATION_SCHEMA.COLUMNS 뷰를 활용하면 됩니다. 이 방법은 별도의 도구 없이 SQL 쿼리만으로 테이블 구조를 손쉽게 파악할 수 있어 매우 유용합니다.
기본 문법
컬럼 이름과 데이터 유형을 조회하는 기본적인 쿼리 문법은 다음과 같습니다.
SELECT COLUMN_NAME, COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '테이블명';
예제 테이블 생성
실습을 위해 먼저 예제용 테이블을 하나 만들어 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(60),
ClientAge int,
ClientSalary DECIMAL(10,4),
isRegularClient bool
);
Query OK, 0 rows affected (0.44 sec)
위 테이블은 정수형 ID, 문자열 이름, 나이, 소수점을 포함한 급여, 불리언 타입의 고객 여부 등 다양한 데이터 유형을 포함하고 있어 예제로 적합합니다.
필드 이름과 유형 조회하기
이제 INFORMATION_SCHEMA.COLUMNS를 사용해 DemoTable의 필드 이름과 데이터 유형을 조회하는 쿼리는 다음과 같습니다.
mysql> SELECT COLUMN_NAME, COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'DemoTable';
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-----------------+---------------+
| COLUMN_NAME | COLUMN_TYPE |
+-----------------+---------------+
| Id | int(11) |
| ClientName | varchar(60) |
| ClientAge | int(11) |
| ClientSalary | decimal(10,4) |
| isRegularClient | tinyint(1) |
+-----------------+---------------+
5 rows in set (0.02 sec)
참고 사항
결과를 보면 bool 타입으로 선언한 isRegularClient 컬럼이 실제로는 tinyint(1)로 저장된 것을 확인할 수 있습니다. MySQL은 내부적으로 불리언 값을 tinyint로 처리하기 때문입니다. 또한, 여러 데이터베이스를 사용 중이라면 TABLE_SCHEMA = '데이터베이스명' 조건을 함께 추가하면 원하는 데이터베이스의 테이블만 정확하게 조회할 수 있습니다.