[SQL] 조건문 IF, CASE

Uhan33·2023년 12월 27일
0

TIL

목록 보기
4/72

SQL의 조건문

오늘은 SQL에서 사용하는 조건문 두 가지를 가지고 왔다.
바로 IF와 Switch~가 아니라 CASE 이다.
자바나 C에서 Switch ~ Case로 작동되는게 바로 CASE라고 생각하면 된다.

??? : "조건문이 뭐지,,?"

  • 조건문은 어떤 조건이 주어질 때 어떤 동작을 수행하도록 하는, 즉 주어진 조건의 만족 여부에 따라 선택적으로 실행하고자 할 때 사용되는 문장`이다.

어떠한 조건에 대하여 참이라면 참에 해당하는 동작을, 거짓이라면 거짓에 해당하는 동작을 실행하는 것이라 생각하면 된다.

IF 문

첫 번째. IF문이다.
엑셀을 사용해봤거나 코딩을 조금이라도 배워본 사람이라면 기본적으로 아는
영어 그 자체의 의미만으로도 대충 유추가 가능한 문법이다.

기본 문법은 아래와 같다.

IF(조건, 조건이 참일 때, 조건이 거짓일 때)

어? 이거 어디서 봤는데?
맞다. 삼항연산자와 유사한 모습이다. 삼항연산자 >> 조건 ? 참 : 거짓

예시를 통해 자세히 알아보자.

 SELECT pokemon_name "포켓몬 이름",
 		poketmon_type "원래 타입 이름",
		IF(poketmon_type = 'Electric', '전기 타입', '전기 타입 아님') "포켓몬 타입"
 FROM pokemon

위 예시는 포켓몬의 이름과 원래 타입 이름을 출력해주면서,
포켓몬의 타입이 'Electrtic'이라면 '전기 타입'을 출력해주고, 아니라면 '전기 타입 아님'을 출력해준다.

결과는 이렇게 나오게 된다.

포켓몬 이름원래 타입 이름포켓몬 타입
피카츄Electric전기 타입
메타몽Normal전기 타입 아님
썬더볼트Electric전기 타입

IF문 안에는 다양한 수식이 들어가도 상관없다.
사칙연산이나 replace, substr 등등 다양하게 활용이 가능하다.

CASE 문

포켓몬 타입은 참과 거짓으로 나누기엔 너무나도 종류가 많다..
그럴땐 CASE문을 사용하면 된다!

CASE문은 조건을 여러가지 지정하고 싶을 때 사용하며, 각 조건별로 적용 할 값을 지정해 줄 수 있다.

기본 문법은 아래와 같다.

CASE
WHEN 조건1 THEN 값(수식)1
WHEN 조건2 THEN 값(수식)2
ELSE 값(수식)3
END

조건1일 경우 값(수식)1 을 동작하고, 조건2일 경우 값(수식)2를 동작한다.
조건3, 조건4, ... 등등 여러 조건을 추가해서 사용할 수 있으며,
모든 조건에 해당하지 않는 것은 ELSE 이후인 값(수식)3를 동작하게 된다.

이 또한 예시를 통해 자세히 알아보자.

SELECT pokemon_name "포켓몬 이름",
 	   poketmon_type "원래 타입 이름",
       CASE WHEN poketmon_type = 'Electric' THEN '전기 타입'
       		WHEN poketmon_type = 'Water' THEN '물 타입'
       		WHEN poketmon_type = 'Fire' THEN '불꽃 타입'
       ...
       ...
       ELSE '노말 타입' END "포켓몬 타입"
FROM poketmon

IF문 예시처럼 포켓몬의 이름과 원래 타입 이름을 출력해주면서,
포켓몬의 타입이 'Electrtic'이라면 '전기 타입'을 출력해주고,
'Water' 라면 '물 타입', 'Fire' 라면 '불꽃 타입'을 출력해준다.
그 어떠한 타입에도 속하지 않는다면 '노말 타입'이다.

결과는 이러하다.

포켓몬 이름원래 타입 이름포켓몬 타입
피카츄Electric전기 타입
메타몽Normal노말 타입
거북왕Water물 타입
리자몽Fire불꽃 타입
야돈Water물 타입

CASE문 또한 다양한 수식이 들어갈 수 있다.

위 처럼 IF 와 CASE의 기본 문법과 예시를 보았는데,
상황에 맞게 유연하게 사용하면 되겠다.
CASE문 안에 IF문을 넣는 식의 변형도 가능하다.

마치며

이전 게시글에 GROUP BY HAVING과 ORDER BY에 대해 다룬다고 했었는데 다음을 기약해야겠다..
오늘 공부를 하다보니 IF와 CASE를 다루고 싶어져서 참지 못했다.
GROUP BY HAVING과 ORDER BY는 (언젠간) 꼭 포스팅하겠다.

0개의 댓글