MySQL 데이터베이스에 정의된 ENUM 타입 컬럼의 모든 가능한 값을 확인하려면 INFORMATION_SCHEMA.COLUMNS 테이블을 활용하면 됩니다. 이 시스템 뷰는 데이터베이스 내 모든 테이블과 컬럼의 메타데이터를 담고 있어, 별도의 복잡한 설정 없이 간단한 쿼리 하나로 ENUM 정의를 조회할 수 있습니다.
기본 쿼리 문법
ENUM 컬럼의 가능한 값들을 가져오는 기본적인 SQL 문법은 다음과 같습니다.
SELECT
COLUMN_TYPE AS anyAliasName
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = 'yourDatabaseName'
AND TABLE_NAME = 'yourTableName'
AND COLUMN_NAME = 'yourEnumColumnName';각 조건의 의미는 다음과 같습니다.
- TABLE_SCHEMA : 조회하려는 데이터베이스 이름
- TABLE_NAME : 대상 테이블 이름
- COLUMN_NAME : ENUM 타입으로 선언된 컬럼 이름
예제 테이블 생성하기
실제 동작을 이해하기 위해 ENUM 데이터 타입을 포함하는 테이블을 먼저 만들어 보겠습니다.
mysql> create table EnumDemo
-> (
-> Id int,
-> Color ENUM('RED','GREEN','BLUE','BLACK','ORANGE')
-> );
Query OK, 0 rows affected (0.66 sec)위 예제에서 'EnumDemo' 테이블은 'sample' 데이터베이스에 생성되었으며, Color 컬럼에는 RED, GREEN, BLUE, BLACK, ORANGE 다섯 가지 값만 허용됩니다.
ENUM 값 조회 예제
이제 앞서 소개한 문법을 적용하여 Color 컬럼의 모든 가능한 ENUM 값을 조회해 보겠습니다.
mysql> SELECT -> COLUMN_TYPE as AllPossibleEnumValues -> FROM -> INFORMATION_SCHEMA.COLUMNS -> WHERE -> TABLE_SCHEMA = 'sample' AND TABLE_NAME = 'EnumDemo' AND COLUMN_NAME = 'Color';
실행 결과
+---------------------------------------------+
| AllPossibleEnumValues |
+---------------------------------------------+
| enum('RED','GREEN','BLUE','BLACK','ORANGE') |
+---------------------------------------------+
1 row in set (0.00 sec)PHP에서 결과 파싱하기
조회된 COLUMN_TYPE 값은 enum('RED','GREEN','BLUE','BLACK','ORANGE') 형태의 문자열입니다. PHP에서 이 값을 배열로 변환하려면 정규표현식이나 문자열 함수를 사용할 수 있습니다.
<?php
$columnType = "enum('RED','GREEN','BLUE','BLACK','ORANGE')";
preg_match("/^enum\((.*)\)$/", $columnType, $matches);
$enumValues = str_getcsv($matches[1], ',', "'");
print_r($enumValues);
// 출력: Array ( [0] => RED [1] => GREEN [2] => BLUE [3] => BLACK [4] => ORANGE )
?>이렇게 하면 ENUM 값을 PHP 배열로 손쉽게 활용할 수 있어, 드롭다운 메뉴 생성이나 입력값 유효성 검사 등에 유용하게 사용할 수 있습니다.