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

MySQL에서 ENUM 필드를 활용해 원하는 행만 선택하는 방법

MySQL에서 ENUM 타입 컬럼은 정해진 값 목록 중 하나만 저장할 수 있는 편리한 데이터 타입입니다. 이 글에서는 ENUM 필드의 값을 기준으로 특정 행을 선택하는 방법을 예제와 함께 살펴보겠습니다.

1. 테이블 생성하기

먼저 ENUM 타입 컬럼을 포함한 테이블을 생성합니다. 아래 예제에서는 직원 상태를 나타내는 EmployeeStatus 컬럼을 만들고, 값 목록으로 'FULLTIME'과 'Intern' 두 가지를 지정했습니다.

mysql> create table DemoTable
-> (
-> EmployeeStatus ENUM('FULLTIME','Intern') default NULL
-> );
Query OK, 0 rows affected (0.66 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다. 마지막 레코드처럼 값을 지정하지 않으면, 컬럼의 기본값인 NULL이 저장됩니다.

mysql> insert into DemoTable values('FULLTIME');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('Intern');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Intern');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.12 sec)

3. 전체 데이터 조회하기

SELECT 문으로 테이블에 저장된 모든 레코드를 확인해 보겠습니다.

mysql> select * from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----------------+
| EmployeeStatus |
+----------------+
| FULLTIME |
| Intern |
| Intern |
| NULL |
+----------------+
4 rows in set (0.00 sec)

4. ENUM 필드로 조건부 행 선택하기

이제 'Intern'이 아닌 행만 조회하고 싶다고 가정해 보겠습니다. 이때 주의할 점은 NULL 값은 일반적인 비교 연산(<>, !=)으로 걸러지지 않는다는 것입니다. 따라서 IS NULL 조건을 함께 사용해야 NULL인 행도 결과에 포함됩니다.

mysql> select * from DemoTable
-> where EmployeeStatus is null or EmployeeStatus <> 'Intern';

실행 결과는 다음과 같습니다.

+----------------+
| EmployeeStatus |
+----------------+
| FULLTIME |
| NULL |
+----------------+
2 rows in set (0.00 sec)

핵심 정리

ENUM 컬럼에서 특정 값을 제외한 행을 조회할 때는 다음 두 가지를 기억하세요.

  • <> 연산자: 지정한 ENUM 값과 다른 행을 선택합니다.
  • IS NULL 조건: NULL은 비교 연산에서 항상 거짓(false)으로 평가되므로, NULL 행도 포함하려면 반드시 OR 조건으로 명시적으로 처리해야 합니다.

이 패턴은 상태값(status), 유형(type) 등 ENUM으로 관리되는 컬럼에서 자주 활용되므로 꼭 익혀두시기 바랍니다.