MySQL에서 IF ELSE 문이란?
IF-ELSE 문은 조건식의 평가 결과가 참(true)인지 거짓(false)인지에 따라 서로 다른 값을 반환하는 제어 구조입니다. MySQL의 SELECT 문 안에서는 프로그래밍 언어처럼 직접적인 IF-ELSE 블록을 사용할 수 없기 때문에, 대신 CASE WHEN 표현식을 활용하여 동일한 조건 분기 로직을 구현합니다.
실제 예제를 통해 살펴보겠습니다.
1단계: 테이블 생성
먼저 CREATE 명령어를 사용하여 예제용 테이블을 생성합니다.
mysql> create table IfelseDemo
-> (
-> id int,
-> FirstName varchar(100)
-> );
Query OK, 0 rows affected (0.46 sec)
'id'와 'FirstName' 두 개의 컬럼을 가진 IfelseDemo 테이블이 성공적으로 만들어졌습니다.
2단계: 데이터 삽입
INSERT 명령어를 사용하여 레코드를 입력합니다.
mysql> insert into IfelseDemo values(1,'John');
Query OK, 1 row affected (0.13 sec)
mysql> insert into IfelseDemo values(2,'Carol');
Query OK, 1 row affected (0.31 sec)
mysql> insert into IfelseDemo values(3,'John');
Query OK, 1 row affected (0.11 sec)
mysql> insert into IfelseDemo values(4,'Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into IfelseDemo values(5,'John');
Query OK, 1 row affected (0.11 sec)
3단계: 전체 레코드 조회
SELECT 문으로 저장된 모든 데이터를 확인합니다.
mysql> select *from IfelseDemo;
실행 결과는 다음과 같습니다.
+------+-----------+
| id | FirstName |
+------+-----------+
| 1 | John |
| 2 | Carol |
| 3 | John |
| 4 | Carol |
| 5 | John |
+------+-----------+
5 rows in set (0.00 sec)
4단계: CASE WHEN으로 IF-ELSE 로직 구현
이제 IF-ELSE 역할을 하는 쿼리를 작성해 보겠습니다. 아래 쿼리는 'id가 2이고 이름이 Carol인 경우'라는 조건을 검사하여, 참이면 'Welcome Carol'을, 거짓이면 'You are not Carol with id 2'를 반환합니다.
mysql> SELECT id, FirstName, (case when (id = 2 and FirstName = 'Carol')
-> then
-> 'Welcome Carol'
-> else
-> 'You are not Carol with id 2'
-> end)as Message from IfelseDemo;
실행 결과는 다음과 같습니다.
+------+-----------+-----------------------------+
| id | FirstName | Message |
+------+-----------+-----------------------------+
| 1 | John | You are not Carol with id 2 |
| 2 | Carol | Welcome Carol |
| 3 | John | You are not Carol with id 2 |
| 4 | Carol | You are not Carol with id 2 |
| 5 | john | You are not Carol with id 2 |
+------+-----------+-----------------------------+
5 rows in set (0.00 sec)
결과 해석
출력 결과를 보면 조건 분기가 정확하게 작동한 것을 확인할 수 있습니다.
- id = 2, FirstName = 'Carol': 두 조건이 모두 충족되므로 THEN 절의 'Welcome Carol'이 반환됩니다.
- id = 4, FirstName = 'Carol': 이름은 일치하지만 id 조건이 맞지 않아 ELSE 절의 메시지가 반환됩니다.
- 그 외 모든 행: 조건을 만족하지 않으므로 ELSE 절의 메시지가 출력됩니다.
이처럼 MySQL에서는 CASE WHEN ... THEN ... ELSE ... END 구문을 사용하면 IF-ELSE와 동일한 조건 처리를 손쉽게 구현할 수 있습니다. 여러 개의 조건이 필요하다면 WHEN 절을 반복해서 추가하면 되며, 단순한 이진 조건이라면 IF(expr1, expr2, expr3) 함수를 사용하는 방법도 있습니다.