Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 열(컬럼) 이름과 데이터 타입을 추출하는 방법

MySQL에서 테이블의 열(컬럼) 이름과 데이터 타입을 함께 추출하려면 INFORMATION_SCHEMA.COLUMNS를 사용하는 것이 가장 간편합니다. 이 시스템 뷰는 데이터베이스 내 모든 테이블의 컬럼 메타데이터를 저장하고 있어, 별도의 도구 없이 SQL 쿼리만으로 원하는 정보를 손쉽게 조회할 수 있습니다.

기본 쿼리 문법

아래와 같이 concat() 함수를 사용해 컬럼 이름과 데이터 타입을 하나의 문자열로 합쳐서 출력할 수 있습니다.

select concat(column_name,'=',data_type) as anyAliasName from information_schema.columns
where table_schema = yourDatabaseName and table_name = yourTableName;
  • table_schema: 데이터베이스(스키마) 이름
  • table_name: 조회할 테이블 이름

예제 테이블 생성하기

먼저 실습에 사용할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable1812
(
Id int,
FirstName varchar(20),
Age int,
isMarried boolean,
status ENUM('ACTIVE','INACTIVE')
);
Query OK, 0 rows affected (0.00 sec)

이 테이블에는 정수형(int), 문자열(varchar), 불린(boolean), 그리고 ENUM 타입 등 다양한 데이터 타입이 포함되어 있어 결과를 확인하기 좋습니다.

컬럼 이름과 타입 추출 쿼리 실행

이제 MySQL에서 컬럼 이름과 데이터 타입을 추출하는 실제 쿼리입니다. 여기서는 데이터베이스가 'web', 테이블이 'DemoTable1812'인 경우를 가정합니다.

mysql> select concat(column_name,'=',data_type) as COLUMNNAMEANDTYPE from information_schema.columns
where table_schema = 'web' and table_name = 'DemoTable1812';

실행 결과

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-------------------+
| COLUMNNAMEANDTYPE |
+-------------------+
| Id=int            |
| FirstName=varchar |
| Age=int           |
| isMarried=tinyint |
| status=enum       |
+-------------------+
5 rows in set (0.00 sec)

참고 사항

결과를 보면 boolean으로 선언한 컬럼이 tinyint로 표시됩니다. 이는 MySQL에서 boolean이 내부적으로 tinyint(1)의 별칭(alias)으로 처리되기 때문입니다. 또한 varchar처럼 길이 정보가 필요한 타입까지 확인하고 싶다면 data_type 대신 column_type 컬럼을 사용하면 됩니다. 예를 들어 column_type을 조회하면 varchar(20)처럼 전체 타입 정의가 출력됩니다.