Create Rules (MySQL)


Create Rules
この記事はFastキャンパスで講義したMySQLデータベースコースのまとめです.
レッスンリンク
1.条件の作成IF
  • 条件作成時に使用する関数
  • 形式:IF(조건식, 참일 때 값, 거짓일 때 값)
  • 主にSELECT節の関数で、結果値を新しい列に戻します.
  • IFNULL
  • データがNULLかどうかを検証し、NULLであれば新しい値の関数を返す
  • ISNULLと同様ISNULLNULLか確認するだけ.
  • 形式:IFNULL([컬럼 이름], NULL일 때 값)
  • この欄の値がNULLの場合は値を返します.
  • 主にSELECT節の関数で、結果値を新しい列に戻します.
  • 2.複数の条件を同時に作成する
    条件作成時に使用する構文:IF複数の条件を作成するときに使用する構文:CASECASE
  • 主にSELECT節の関数で、結果値を新しい列に戻します.
  • ELSE文を省略するとNULL値を返します.
  • -- 형식 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
    3.関数の作成
    CREATE FUNCTION [함수 이름]([입력값 이름] [데이터 타입], ...)
    		RETURNS [결과값의 데이터 타입]
    BEGIN
    		DECLARE [임시값 이름] [데이터 타입];
    		SET [임시값 이름] = [입력값 이름];
    		쿼리;
    		RETURN [결과값];
    END
    クリア関数
    DROP FUNCTION [함수 이름];
    MySQL Workbenchで関数を作成する際の注意点
    SET GLOBAL log_bin_trust_function_creators = 1;
    --사용자 계정에 function create 권한 생성
    
    DELIMITER //	-- 함수의 시작 지정
    
    CREATE FUNCTION [함수 이름]([입력값 이름] [데이터 타입], ...)
    		RETURNS [결과값의 데이터 타입]
    BEGIN
    		DECLARE [임시값 이름] [데이터 타입];
    		SET [임시값 이름] = [입력값 이름];
    		쿼리;
    		RETURN [결과값];
    END
    
    //
    DELIMITER ;	-- 함수의 끝 지정
    -- 키워드와 ; 사이에 공백 존재
    4.実習
    DROP DATABASE IF EXISTS pokemon; CREATE DATABASE pokemon;
    
    USE pokemon;
    
    CREATE TABLE mypokemon (
    		number int,
    		name varchar(20),
    		type varchar(10),
    		attack int,
    		defense int
    );
    
    INSERT INTO mypokemon (number, name, type, attack, defense)
    VALUES	(10, 'caterpie', 'bug', 30, 35),
    		(25, 'pikachu', 'electric', 55, 40),
    		(26, 'raichu', 'electric', 90, 55), (125, 'electabuzz', 'electric', 83, 57),
    		(133, 'eevee', 'normal', 55, 50), (137, 'porygon', 'normal', 60, 70),
    		(152, 'chikoirita', 'grass', 49, 65), (153, 'bayleef', 'grass', 62, 80),
    		(172, 'pichu', 'electric', 40, 15), (470, 'leafeon', 'grass', 110, 130);
    
    CREATE FUNCTION isStrong(attack INT, defense INT)
    		RETURNS VARCHAR(20)
    BEGIN
    		DECLARE atk INT;
    		DECLARE dfs INT;
    		DECLARE msg VARCHAR(20);
    		SET atk = attack;
    		SET dfs = defense;
    		SELECT	CASE
    					WHEN atk + dfs > 120 THEN "very strong"
    					WHEN atk + dfs > 90 THEN "strong"
    					ELSE "not strong"
    				END INTO msg;
    		RETURN msg;
    END
    
    SELECT name, isStrong(attack, defense) AS isStrong
    FROM mypokemon;