DB

MySQL기초(6)

with_AI 2022. 5. 4. 10:21

IF

 

주로 SELECT절에 사용, 결과 값을 새로운 컬럼으로 변환 한다.

 

SELECT name, IF(attack >= 60, 'strong','weak')AS attack_class

FROM pokemon.mypokemon;

 

IFNULL

 

데이터가 NULL인지 아닌지를 확인해 NULL이라면 새로운 값을 반환한다.

 

SELECT name, IFNULL(name, 'unknown') AS full_name

FROM mypokemon

 

 

CASE

조건이 여러개일때 사용

 

 

SELECT name
CASE
WHEN attack >= 100 THEN 'very strong'
WHEN attack >= 60 THEN 'strong'
ELSE 'weak'
END AS attack_class
FROM my pokemon

 

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

 

함수만들기

CREATE FUNCTION

 

함수 지우기

DROP FUNCTION

 

 

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;

RETURNS ability

END

 

MYSQL 에서 함수 생성시

 

SET GLOBAL log_bin_trust_function+creators = 1; 

 

권한을 생성시켜줘야 함

DELIMITER //   // DELIMITER   로 감싸줘야함!

 

 

최종예제

SET GLOBAL log_bin_trust_function+creators = 1; 
DELIMITER //   

CREATE FUNCTION isStrong(attack INT, defense INT)
RETURNS VARCHAR(20)

BEGIN
DECLARE a INT;
DECLARE b INT;
DECLARE isStrong VARCHAR(20);
SET a = attack;
SET b = defense;
SELECT CASE
 WHEN a+b > 120 THEN 'veryStrong'
 WHEN a+b > 90 THEN 'Strong'
 ELSE 'notStrong'
 END INTO isStrong;
END

// DELIMITER ;

SELECT name, isStrong(attack, defense) AS isStrong
FROM mypokemon

 

'DB' 카테고리의 다른 글

MySQL기초(7)  (0) 2022.05.04
MySQL 기초(5)  (0) 2022.05.04
MySQL 기초 (4)  (0) 2022.05.02
MySQL 기초(3)  (0) 2022.05.02
MySQL 기초 (2)  (0) 2022.04.29