MySQL에서 IF() 함수를 사용하면 조건에 따라 값을 판단하고, 그 결과를 별도의 새 열로 출력할 수 있습니다. 이번 글에서는 학생의 점수(Score)가 기준점 이상이면 PASS, 그렇지 않으면 FAIL로 표시하는 Status 열을 만드는 방법을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 데모용 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(100),
-> Subject varchar(100),
-> Score int
-> );
Query OK, 0 rows affected (0.94 sec)
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 학생 데이터를 입력합니다.
mysql> insert into DemoTable(Name,Subject,Score) values('Chris','MySQL',80);
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable(Name,Subject,Score) values('Robert','MongoDB',45);
Query OK, 1 row affected (0.62 sec)
mysql> insert into DemoTable(Name,Subject,Score) values('Adam','Java',78);
Query OK, 1 row affected (0.52 sec)3. 전체 데이터 조회하기
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+----+--------+---------+-------+
| Id | Name | Subject | Score |
+----+--------+---------+-------+
| 1 | Chris | MySQL | 80 |
| 2 | Robert | MongoDB | 45 |
| 3 | Adam | Java | 78 |
+----+--------+---------+-------+
3 rows in set (0.00 sec)
4. IF 절로 PASS/FAIL 판정 열 만들기
다음 쿼리는 MySQL의 IF() 함수를 사용하여 점수가 75보다 크면 PASS, 그렇지 않으면 FAIL을 표시하는 Status 열을 생성합니다.
mysql> select Name,Subject,Score,if(Score > 75,"PASS","FAIL") AS Status from DemoTable;
출력 결과
+--------+---------+-------+--------+
| Name | Subject | Score | Status |
+--------+---------+-------+--------+
| Chris | MySQL | 80 | PASS |
| Robert | MongoDB | 45 | FAIL |
| Adam | Java | 78 | PASS |
+--------+---------+-------+--------+
3 rows in set (0.00 sec)
IF() 함수 동작 원리
IF(조건식, 참일 때 값, 거짓일 때 값) 형태로 사용되며, 위 예제에서는 Score > 75라는 조건을 평가한 뒤 조건이 참이면 'PASS'를, 거짓이면 'FAIL'을 반환합니다. AS Status를 통해 결과 열의 이름을 지정했기 때문에 원본 테이블을 변경하지 않고도 조회 시점에 판정 결과를 새 열로 확인할 수 있습니다.