[ 7-1. 조건 만들기(IF) ]
○ IF 정의
· 조건을 만들 때 사용하는 함수
○ 특징
· IF(조건식, 참일때 값, 거짓일 때 값) 형식으로 사용
· 주로 SELECT절에 사용하는 함수로, 결과 값을 새로운 컬럼으로 반환
/* IF 활용 예제 */
SELECT [IF(조건)]
FROM [테이블 이름]
ex) SELECT name, IF(attack >= 60, 'strong', 'weak') AS attack_class
FROM pokemon.mypokemon;
○ IF NULL
· 데이터가 NULL인지 아닌지를 확인해 NULL이라면 새로운 값을 반환하는 함수
○ 특징
· IFNULL([컬럼 이름], NULL일 때 값) 형식으로 사용
· 해당 컬럼의 값이 NULL인 로우에서 NULL 일 때 값을 반환
· 주로 SELECT절에 사용하는 함수로, 결과 값을 새로운 컬럼으로 반환
/* IFNULL 활용 예제 */
SELECT [IF NULL(조건)]
FROM [테이블 이름]
ex) SELECT name, IFNULL(name, 'unknown') AS full_name
FROM pokemon.mypokemon;
[ 7-2. 여러 조건 한번에 만들기 ]
○ 조건을 하나 만들 때 → IF
○ 조건을 여러 개 만들 때 → CASE
○ CASE 특징
· 주로 SELECT절에 사용하는 함수로, 결과 값을 새로운 컬럼으로 반환
· ELSE 문장을 생략 시 NULL 값을 반환
/* CASE 활용 예제 */
/* 형식 1 */
CASE
WHEN 조건식1 THEN 결과값1
WHEN 조건식2 THEN 결과값2
ELSE 결과값3
END
ex) SELECT name,
CASE
WHEN attack >= 100 THEN 'very strong'
WHEN attack >= 60 THEN 'strong'
ELSE 'weak'
END AS attack_class
FROM pokemon.mypokemon;
/* 형식 2 */
CASE [컬럼 이름]
WHEN 조건값1 THEN 결과값1
WHEN 조건식2 THEN 결과값2
ELSE 결과값3
END
ex) SELECT name, type
CASE type
WHEN 'bug' THEN 'grass'
WHEN 'electric' THEN 'water'
WHEN 'grass' THEN 'bug'
END AS rival_type
FROM pokemon.mypokemon;
[ 7-3. 함수 만들기 ]
/* 함수 만들기 예제 */
CREATE FUNCTION [함수 이름] ([입력값 이름] [데이터 타입], ···)
RETURNS [결과값 데이터 타입]
BEGIN
DECLARE [임시값 이름] [데이터 타입]
SET [임시값 이름] = [입력값 이름];
쿼리;
RETURN 결과값
END
ex) CREATE FUNCTION getAbility(attack INT, defense INT)
RETURNS INT
BEGIN
DECLARE a INT;
DECLARE b INT;
DECLARE ability INT;
SET a = attack;
SET b = defense;
SELECT a + b INTO ability;
RETURN ability;
END
○ MySQL Workbench에서 함수 생성 시 주의할 점
· 사용자 계정에 function create 권한 생성
· 함수의 시작/끝(DELIMITER) 지정

[ 7-4. [실습] 함수를 만들고 사용해보자 ]
< MISSION >
공격력과 방어력의 합이 120보다 크면 'very strong', 90보다 크면 'strong',모두 해당 되지 않으면 'not strong'를 반환하는 함수 'isStrong'을 만들고 사용해주세요.
- 조건 1: attack과 defense를 입력값으로 사용하세요.
- 조건2 : 결과값 데이터 타입은 VARCHAR(20)로 해주세요.

'📒 교육 및 공부 > [교육] SQL 데이터분석 첫걸음' 카테고리의 다른 글
| [SQL 데이터분석 첫걸음] Day08. 테이블 합치기 (0) | 2023.12.17 |
|---|---|
| [SQL 데이터분석 첫걸음] Day06. 데이터 그룹화하기 (0) | 2023.12.14 |
| [SQL 데이터분석 첫걸음] Day05. 원하는 데이터 만들기 (0) | 2023.12.04 |
| [SQL 데이터분석 첫걸음] Day04. 조건에 맞는 데이터 가져오기 (1) | 2023.11.25 |
| [SQL 데이터분석 첫걸음] Day03. 데이터 가져오기 (1) | 2023.11.21 |