IF(조건식,조건식이 참,거짓일 때)
문자나 데이터 넣는 곳에
고정된 값이 아닌 조건에 따라 각각 다른 값을 넣고 싶다면
IF 함수를 사용할 수 있다.
예시)

card 테이블에서 사용금액이 20만원을 넘는 경우
"우수" 아니면 "거지"를 출력하고 싶다면
SELECT 고객명, 사용금액,
IF(사용금액 > 200000,"우수","거지") FROM card
IF 함수의 단점이라고 하면 조건을 하나만 잡을 수 있다는것이다.
이것을 해결할 수 있는 함수는 CASE 문법이다.
CASE
WHEN 조건식1 THEN 남길값1
WHEN 조건식2 THEN 남길값2
WHEN 조건식3 THEN 남길값3
END
예시)
사용금액이 20만원 이상이면 '우수'
10~20만원이면 '준수'
10만원 미만이면 '그지'
이것을 구현하고 싶다면
SELECT 고객명, 사용금액,
CASE
WHEN 사용금액 >= 200000 THEN '우수'
WHEN 사용금액 >= 100000 THEN '준수'
WHEN 사용금액 < 100000 THEN '그지'
(또는 ELSE '그지')
END FROM card
ELSE 문법을 써서 위의 조건식이 모두 맞지 않는다면 ELSE 우측에 있는 값을 남겨준다.
SELECT SUM(
CASE
WHEN 고객등급 = 'vip' THEN 3
WHEN 고객등급 = '로열' THEN 2
ELSE 1
END
) FROM card
case 문법을 이용해서 각 등급별로 점수를 매긴 후
그 점수를 모두 더하기 위해 SUM 집계함수를 사용했다.

SELECT 고객명, 사용금액,
CASE
WHEN 사용금액 >= 300000 THEN 'vip'
WHEN 사용금액 >= 200000 THEN '로열'
ELSE '패밀리'
END FROM card
까진 생각할 수 있었는데 고객 등급이 변동될 이름만 출력하는 방법에서 막혔다. 조건에 따라 기존 고객등급 컬럼에서 데이터만 변경해야 하는 것이다.
새로운 컬럼에 데이터를 추가하는 것은 SELECT 뒤에 조건문을 넣어도 되지만 기존 컬럼에서 데이터를 변경하기 위한 조건문은 WHERE에 추가해야되는 것을 알게되었다.
SELECT 고객명, 사용금액, 고객등급 FROM card
WHERE 고객등급 != CASE
WHEN 사용금액 >= 300000 THEN 'vip'
WHEN 사용금액 >= 200000 THEN '로열'
ELSE '패밀리'
END