MySQL에서 테이블에 저장된 실제 데이터 값과 해당 컬럼의 데이터 유형을 한 번에 조회하고 싶다면 INFORMATION_SCHEMA.COLUMNS를 활용할 수 있습니다. 이 메타데이터 뷰는 데이터베이스 내 모든 테이블과 컬럼의 구조 정보를 담고 있어, 일반 SELECT 쿼리와 조인하여 데이터 유형을 별도 열로 출력할 수 있습니다.
1. 샘플 테이블 생성
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(20)
);
Query OK, 0 rows affected (0.73 sec)2. 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable(Name) values('Robert');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable(Name) values('Sam');
Query OK, 1 row affected (0.12 sec)3. 전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------+ | Id | Name | +----+--------+ | 1 | Chris | | 2 | Robert | | 3 | Sam | +----+--------+ 3 rows in set (0.00 sec)
4. 데이터 값과 데이터 유형을 함께 조회하기
이제 원본 테이블과 INFORMATION_SCHEMA.COLUMNS를 조인하여, 실제 데이터 값(Name)과 해당 컬럼의 데이터 유형(DATA_TYPE)을 별도 열로 동시에 표시하는 쿼리입니다.
mysql> SELECT DemoTable.Name, col1.DATA_TYPE FROM DemoTable, INFORMATION_SCHEMA.COLUMNS col1 WHERE col1.TABLE_NAME='DemoTable' AND COLUMN_NAME='Name';
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------+-----------+ | Name | DATA_TYPE | +--------+-----------+ | Chris | varchar | | Robert | varchar | | Sam | varchar | +--------+-----------+ 3 rows in set (0.04 sec)
쿼리 설명 및 참고 사항
이 쿼리의 핵심은 WHERE 절에 있는 두 가지 조건입니다. TABLE_NAME='DemoTable'은 메타데이터를 조회할 대상 테이블을 지정하고, COLUMN_NAME='Name'은 데이터 유형을 확인할 컬럼을 지정합니다. 이렇게 하면 DemoTable의 각 행마다 Name 컬럼의 값과 그 데이터 유형인 'varchar'가 함께 표시됩니다.
추가로, 여러 데이터베이스에 같은 이름의 테이블이 존재할 수 있으므로 정확성을 높이려면 TABLE_SCHEMA 조건도 함께 사용하는 것이 좋습니다. 예를 들어 AND col1.TABLE_SCHEMA = 'your_database_name'을 WHERE 절에 추가하면 특정 데이터베이스로 범위를 좁힐 수 있습니다. 또한 명시적인 JOIN 구문(예: CROSS JOIN 또는 INNER JOIN ... ON 1=1)을 사용하면 가독성이 더욱 향상됩니다.