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

PHP로 MySQL 데이터베이스에서 ENUM 가능한 값들을 조회하는 방법

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 배열로 손쉽게 활용할 수 있어, 드롭다운 메뉴 생성이나 입력값 유효성 검사 등에 유용하게 사용할 수 있습니다.