본문 바로가기

수업/수업정리

2024-03-27:오후:PROCEDURE, DELIMITER, CASE, IF, DELETE

-- 1. 회원의 이름으로 회원 아이디, 이름, 이메일을 조회하는 프로시저를 생성
-- 프로시저 생성
DELIMITER $$
CREATE PROCEDURE sp_member(IN memberName VARCHAR(100))
BEGIN
	SELECT
		m.m_id AS '회원 아이디',
		m.m_name AS '이름',
		m.m_email AS '이메일'
	FROM
		tb_member AS m
	WHERE
		m.m_name=memberName;
END $$ 
DELIMITER ;

-- 생성한 프로시저 호출
CALL sp_member('홍01');

-- 프로시저 삭제
DROP PROCEDURE sp_member;
/*
INTO문 : 사용자가 정의한 변수에 값을 대입하기 위해 사용한다.

[구문]
DECLARE num INT;

SELECT
	age INTO num
FROM

*/

-- 2.회원의 아이디와 비밀번호를 입력하면 회원의 이메일을 조회하는 프로시저 생성
DELIMITER $$
CREATE PROCEDURE sp_login(IN userId VARCHAR(100),IN userPw VARCHAR(100))
BEGIN
	SELECT
		m.m_email AS '이메일'
	FROM
		tb_member AS m
	WHERE
		m.m_id=userId
		And
		m.m_pw=userPw;
END $$ 
DELIMITER ;

CALL sp_login('id001','pw001');

/*
IF문

[구문]
IF 조건 THEN
	수행문
ELSEIF 조건 THEN
	수행문
ELSE 조건 THEN
	수행문
	
CASE문
[구문1]
CASE
	WHEN 조건식1 THEN 결과값1
	WHEN 조건식2 THEN 결과값2
	ELSE
END

[구문2]
CASE 컬럼_이름
	WHEN 조건식1 THEN 결과값1
	WHEN 조건식2 THEN 결과값2
	ELSE
END
*/

-- 3. 상품 가격에 따라 결과 조회
SELECT
		g.g_code,
		g.g_name,
		(case
			when g.g_price	>	500000 then 'expensive'
			when g.g_code < 100000 then 'cheep'
			ELSE	'nomal'
			end
			)	AS '상품_가치'
	FROM
		tb_goods AS g
	ORDER BY g.g_price DESC;

-- 4. 나라 코드에 따라 결과 출력
SELECT
		c.Name,
		c.CountryCode,
		(case CountryCode
			when 'USA' then 'G2'
			when 'CHN' then 'G2'
			end
			)	AS 'Group of two'
	FROM
		city AS c;

-- 5.회원의 아이디를 입력 받아 회원의 권한을 조회하는 프로시저를 생성
--		IF문 사용
DROP PROCEDURE if EXISTS sp_power
Delimiter $$
CREATE PROCEDURE sp_power(IN userId VARCHAR(100))
BEGIN
	select
		m.m_id,
		(case m.m_level
			when 1 then '관리자'
			when 2 then '판매자'
			when 3 then '구매자'
			ELSE '권한없음'
			END)
			AS '권한'
	from
		tb_member AS m
	where
		m.m_id=userId;
END $$
delimiter ;

DROP PROCEDURE if EXISTS sp_power
Delimiter $$
CREATE PROCEDURE sp_power(IN userId VARCHAR(10))

BEGIN
	DECLARE userPower INT DEFAULT 0;

	select
		m.m_level INTO userPower
	from
		tb_member AS m
	where
		m.m_id=userId;
		
	IF(userPower=1) THEN SELECT '관리자';
	ELSEIF(userPower= 2) THEN SELECT '판매자';
	ELSEIF(userPower=3) THEN SELECT '구매자';
	ELSE SELECT '권한없음';
	END IF;
END $$
delimiter ;

CALL sp_power('id003');