💡조건만들기

📖조건을 만들 때 사용하는 함수 IF

  • IF(조건식, 참일때 값, 거짓일 때 값) 형식으로 사용합니다.
  • 주로 SELECT 절에 사용하는 함수로, 결과 값을 새로운 컬럼으로 반환합니다.
    쿼리 입력
SELECT name, IF (attack >= 60, 'strong', 'week') AS attack_class
FROM pokemon.mypokemon;

📖데이터가 NULL인지 아닌지를 확인해 NULL이라면 새로운 값을 반환하는 함수

  • IFNULL([컬럼이름], NULL일 때 값) 형식으로 사용합니다.
  • 해당 컬럼의 값이 NULL인 로우에서 NULL일 때 값을 반환합니다.
  • 주로 SELECT 절에 사용하는 함수로, 결과 값을 새로운 컬럼으로 반환합니다.
    입력쿼리
SELECT name,IFNULL(name,'unknown') AS full_name
FROM pokemon.mypokemon;

📖여러 조건 한번에 만들기

쿼리 문법
형식1

CASE
	WHEN 조건식1 THEN 결과값1
    WHEN 조건식2 THEN 결과값2
    ELSE 결과값3
END

형식2

CASE [컬럼이름]
	WHEN 조건값1 THEN 결과값1
    WHEN 조건값2 THEN 결과값2
    ELSE 결과값3
END
  • 주로 SELECT절에 사용하는 함수로, 결과 값을 새로운 컬럼으로 반환합니다.
  • ELSE 문장을 생략 시 NULL값을 반환합니다.
    쿼리 문법
SELECT name,
CASE	
	WHEN attack >= 100 THEN 'very_strong'
    WHEN attack >= 60 THEN 'strong'
    ELSE 'weak'
END AS attack_class
FROM mypokemon;

쿼리 문법

SELECT name, type
CASE type
	WHEN 'bug' THEN 'grass'
    WHEN 'electric' THEN 'water'
    WHEN 'grass' THEN 'bug'
END AS rival_type
FROM pokemon.mypokemon;

📖함수 만들기, CREATE FUNCTION

쿼리 문법

CREATE FUNCTION [함수이름]([입력값 이름][데이터 타입],...)
		RETURNS [결과값 데이터 타입]
BEGIN
		DELARE [임시값 이름][데이터 타입];
        SET [임시값 이름] = [입력값 이름];
        쿼리;
        RETURN 결과값
END
  • 공격력과 방어력의 합을 가져오는 함수
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 ablilty;
        RETURN ability;
END

SELECT name, getability(attack,defense) AS getablilty
FROM mypeokmon;

💡MySQL Workbench 에서 함수 생성시 주의할 점

SET GLOBAL log_bin_trust_function_creators = 1;

DELIMITER //

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 ablilty;
        RETURN ability;
END
>
//
DELIMITER ; -- 꼭 한 칸을 띄어주세요!!


🙄 입력할 것이 많아서 헷갈리고 외울 것이 많다고 느껴지지만, 자주쓰다보면 익숙해질 것이다.
기억 안날 때 절망하지 말고 돌아와서 다시 보자
profile
https://blog.naver.com/jaewoo2_25

1개의 댓글

comment-user-thumbnail
2023년 7월 31일

좋은 정보 감사합니다

답글 달기