MySQL에서는 ENUM 데이터 타입을 사용하면 열거 가능한(enumerable) 값을 손쉽게 정의할 수 있습니다. ENUM은 컬럼에 미리 지정된 값 목록 중 하나만 저장되도록 제한하는 기능으로, 상태값이나 옵션처럼 정해진 선택지가 있는 데이터를 다룰 때 매우 유용합니다.
ENUM 기본 문법
yourColumnName ENUM(value1,value2,........................N)
괄호 안에 허용할 값들을 쉼표로 구분하여 나열하면 됩니다. 이렇게 선언된 컬럼에는 목록에 포함된 값만 입력할 수 있으며, 그 외의 값을 넣으면 오류가 발생하거나 빈 문자열로 처리됩니다.
테이블 생성하기
먼저 ENUM 컬럼을 포함한 테이블을 생성해 보겠습니다.
mysql> create table EnumDemo
-> (
-> Light int,
-> IsONOrOff ENUM('ON','OFF')
-> );
Query OK, 0 rows affected (1.06 sec)
위 예제에서 IsONOrOff 컬럼은 ENUM('ON','OFF')로 선언되어, 'ON' 또는 'OFF' 두 가지 값만 가질 수 있습니다.
레코드 삽입하기
이제 테스트용 데이터를 삽입해 보겠습니다.
mysql> insert into EnumDemo values(1,'ON'),(0,'OFF');
Query OK, 2 rows affected (0.24 sec)
Records: 2 Duplicates: 0 Warnings: 0
전체 레코드 조회하기
저장된 모든 레코드를 확인하려면 아래와 같이 SELECT 문을 실행합니다.
mysql> select * from EnumDemo;
다음은 실행 결과입니다. ENUM으로 정의한 값들이 정상적으로 출력되는 것을 확인할 수 있습니다.
+-------+-----------+
| Light | IsONOrOff |
+-------+-----------+
| 1 | ON |
| 0 | OFF |
+-------+-----------+
2 rows in set (0.07 sec)
ENUM 사용 시 참고 사항
ENUM은 내부적으로 문자열이 아닌 숫자 인덱스(1부터 시작)로 저장되기 때문에 저장 공간을 절약할 수 있다는 장점이 있습니다. 다만 나중에 값 목록을 변경해야 할 경우 ALTER TABLE 작업이 필요하므로, 선택지가 자주 바뀌는 데이터라면 별도의 참조 테이블을 사용하는 것이 더 좋습니다.