๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Database

[Database] HeidiSQL ํ•จ์ˆ˜_๋ทฐ_ํ”„๋กœ์‹œ์ €

by ITyranno 2023. 11. 29.
728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

 

 

 

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„๋ฅผ ํƒ๊ตฌํ•ฉ์‹œ๋‹ค.

 

 

 

 

 

 

 

 

[  ํ•จ์ˆ˜ ์ƒ์„ฑ  ]

 

-- ์ƒํ’ˆ๋ถ„๋ฅ˜๋ช…์„ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ

-- ํ•จ์ˆ˜ ๊ตฌ๋ฌธ ์‹œ์ž‘
Delimiter //

-- ์‚ฌ์šฉ์ž ์ •์˜ํ•จ์ˆ˜
CREATE FUNCTION defGetLprodNm(paramGu VARCHAR(10))
-- ๋ฆฌํ„ดํƒ€์ž… ์ •์˜
RETURNS VARCHAR(50)

-- character set UTF8MB4
-- ํ•จ์ˆ˜ ๊ธฐ๋Šฅ ์‹œ์ž‘
BEGIN
-- ๋ฐ˜ํ™˜ํ•  ๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜ ์„ ์–ธ
	DECLARE result VARCHAR(50);
	-- ์ƒํ’ˆ๋ถ„๋ฅ˜๋ช…์„ ์ถ”์ถœํ•˜๋Š” sql ๊ตฌ๋ฌธ ์ž‘์„ฑ
	select lprod_nm INTO result
		FROM lprod 
		WHERE lprod_gu = paramGu;
	-- ๋ฐ˜ํ™˜ํ•˜๊ธฐ
	RETURN result;
-- ํ•จ์ˆ˜ ๊ธฐ๋Šฅ ์ข…๋ฃŒ
END //
-- ํ•จ์ˆ˜ ์ „์ฒด ๊ตฌ๋ฌธ ์ข…๋ฃŒ
Delimiter ;

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- ์ƒํ’ˆ๋ถ„๋ฅ˜๋ช…์„ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ
-- ์ƒ์„ฑํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ธฐ

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ  ]

 

SELECT Prod_name, 
		Prod_lgu, 
		defGetLprodNm(prod_lgu) AS lprod_nm
FROM prod;

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

 

[  ํ•จ์ˆ˜ ์ƒ์„ฑ  ]

/*
๋‚จ์„ฑ/์—ฌ์„ฑ ์ถ”์ถœํ•˜๊ธฐ
*/

Delimiter //

CREATE FUNCTION udfGetMenWomen(paramNum INT)
-- ๋ฆฌํ„ด ํƒ€์ž… ์ •์˜
RETURNS VARCHAR(4)
BEGIN
	-- ๋ฐ˜ํ™˜ํ•  ๋ณ€์ˆ˜ ์„ ์–ธ
	DECLARE result VARCHAR(4);
	
	-- ๋‚จ์—ฌ ๊ตฌ๋ถ„์„ ์œ„ํ•œ ์กฐ๊ฑด๋ฌธ ์ฒ˜๋ฆฌ
	if MOD(SUBSTRING(paramNum, 1, 1), 2) = 0 Then
		SET result = '์—ฌ์„ฑ';
	else
		SET result = '๋‚จ์„ฑ';
	END if;
	
	RETURN result;
END //
Delimiter ;

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ์„ฑ๋ณ„์„ ์กฐํšŒํ•˜๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ
-- ์กฐํšŒ ์ปฌ๋Ÿผ : ํšŒ์› ์ด๋ฆ„, ์„ฑ๋ณ„ ์กฐํšŒํ•˜๊ธฐ
-- ์„ฑ๋ณ„์€ ๋‚จ์„ฑ or ์—ฌ์„ฑ์œผ๋กœ ์กฐํšŒ
-- ํ•จ์ˆ˜ ์ด๋ฆ„ : udfGetMenWomen
-- ํ•จ์ˆ˜ ๊ตฌ๋ฌธ ์‹œ์ž‘

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ  ]

 

SELECT Mem_name,
		 udfGetMenWomen(Mem_regno1) AS ์„ฑ๋ณ„
FROM member;

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ํ•จ์ˆ˜ ์ƒ์„ฑ  ]

 

/*
์‹ ๊ทœ์ฃผ๋ฌธ๋ฒˆํ˜ธ ๋ฐœ๊ธ‰ํ•˜๊ธฐ
*/

Delimiter //

CREATE FUNCTION udfGetNewCartNo ()
-- ๋ฆฌํ„ด ํƒ€์ž… ์ •์˜
RETURNS VARCHAR(13)
BEGIN
	-- ๋ฐ˜ํ™˜ํ•  ๋ณ€์ˆ˜ ์„ ์–ธ
	DECLARE result VARCHAR(13);
	
	SELECT If(MAX(cart_no) IS not NULL,
					MAX(cart_no)+1,
					concat(REPLACE(CURDATE(), '-', ''), '00001')) INTO result
	FROM cart
	WHERE SUBSTRING(cart_no, 1, 8) = CURDATE();
	
	RETURN result;
END //
Delimiter ;

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ์˜ค๋Š˜ ์ƒˆ๋กœ์šด ์ฃผ๋ฌธ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
-- ์‹ ๊ทœ์ฃผ๋ฌธ๋ฒˆํ˜ธ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”
-- ํ•จ์ˆ˜์ด๋ฆ„ : udfGetNewCartNo()

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ  ]

 

SELECT udfGetNewCartNo();

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  View : ๊ฐ€์ƒํ…Œ์ด๋ธ”  ]

 

-- ์ž์ฃผ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜, SQL ๊ตฌ๋ฌธ์ด ๊ธด ๊ฒฝ์šฐ ์กฐํšŒ ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ
-- ๋ฏธ๋ฆฌ ๊ฐ์ฒดํ™” ์‹œ์ผœ์„œ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹
-- ์กฐํšŒ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ž…๋ ฅ/์ˆ˜์ •/์‚ญ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
-- ์ž…๋ ฅ/์ˆ˜์ •/์‚ญ์ œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ, view ์‚ฌ์šฉ๋ชฉ์ ์— ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

 

 

 

[  ๊ฐ€์ƒํ…Œ์ด๋ธ” ์ƒ์„ฑ  ]

 

/* ๊ตฌ๋งค๋‚ด์—ญ์ด ์—†๋Š” ํšŒ์› view ์ƒ์„ฑ */

Delimiter //

CREATE VIEW viewNoCartMember AS

	-- ์กฐํšŒํ•  Select๋ฌธ ์ƒ์„ฑ
	SELECT Mem_id, Mem_name
   FROM member
   WHERE mem_id NOT IN (SELECT cart_member
							FROM cart)//

Delimiter ;

 

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ  ]

 

-- View ์‚ฌ์šฉํ•˜๊ธฐ
-- ์‚ฌ์šฉ๋ฒ• : ํ…Œ์ด๋ธ”๊ณผ ๋™์ผ
SELECT *
FROM viewnocartmember;

 

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ์ €์žฅํ”„๋กœ์‹œ์ € (Stored Procedure; sp)  ]

 

 

-- ํ”„๋กœ๊ทธ๋žจ ์˜์—ญ์ด ์•„๋‹Œ, DB์ž์ฒด์—์„œ SQL ๊ตฌ๋ฌธ์„ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ
-- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— SQL ๊ตฌ๋ฌธ์„ ๊ฐ์ฒดํ™”ํ•˜์—ฌ ํ˜ธ์ถœ๋ฐฉ์‹์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

 

 

 

 

[  ํ”„๋กœ์‹œ์ € ์ƒ์„ฑ  ]

 

 

/* ๊ตฌ๋งค๋‚ด์—ญ์ด ์—†๋Š” ํšŒ์› ํ”„๋กœ์‹œ์ € ์ƒ์„ฑ */

Delimiter //

CREATE PROCEDURE spNoCartMember ()
Begin

	-- ์กฐํšŒํ•  Select๋ฌธ ์ƒ์„ฑ
	SELECT Mem_id, Mem_name
   FROM member
   WHERE mem_id NOT IN (SELECT cart_member
							FROM cart);
END //
Delimiter ;

 

 

 

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ  ]

 

CALL spNoCartMember();

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [ ๋ฌธ์ œ ]
/*
๋ชจ๋“  ๊ฑฐ๋ž˜์ฒ˜๋ณ„ ๋งค์ถœ๊ธˆ์•ก์˜ ์ดํ•ฉ ์กฐํšŒํ•˜๊ธฐ
 - ๋‹จ, 2005๋…„๋„ ์ฃผ๋ฌธ๋‚ด์—ญ
 - ์กฐํšŒ ์ปฌ๋Ÿผ : ๊ฑฐ๋ž˜์ฒ˜์ฝ”๋“œ, ๊ฑฐ๋ž˜์ฒ˜๋ช…, ๋งค์ถœ๊ธˆ์•ก์˜ ์ดํ•ฉ
 
 - ์œ„ ์กฐํšŒ์— ๋Œ€ํ•œ select๋ฌธ์„ view๋กœ ์ƒ์„ฑ
 - ํ”„๋กœ์‹œ์ €์—์„œ ์œ„์— ์ƒ์„ฑํ•œ view๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ callํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์กฐํšŒ
 
 - view์ด๋ฆ„ : viewGetBuyerAll
 - ํ”„๋กœ์‹œ์ € ์ด๋ฆ„ : spGetBuyerAll
*/

 

 

[  view  ]

 

/*
๋ชจ๋“  ๊ฑฐ๋ž˜์ฒ˜๋ณ„ ๋งค์ถœ๊ธˆ์•ก์˜ ์ดํ•ฉ ์กฐํšŒํ•˜๊ธฐ
 - view์ด๋ฆ„ : viewGetBuyerAll
*/

-- view

/* ๊ตฌ๋งค๋‚ด์—ญ์ด ์—†๋Š” ํšŒ์› view ์ƒ์„ฑ */

Delimiter //

CREATE VIEW viewGetBuyerAll AS

SELECT buyer_id, buyer_name,
		 SUM(nvl(cart_qty * prod_sale, 0)) AS total
FROM buyer
		LEFT OUTER JOIN prod
			ON(buyer_id = prod_buyer)
		LEFT OUTER JOIN cart
			ON(prod_id = cart_prod
				AND LEFT(cart_no, 4)='2005')
GROUP BY buyer_id, buyer_name //
Delimiter ;

 

 

 

[  ํ”„๋กœ์‹œ์ €  ]

 

-- ํ”„๋กœ์‹œ์ €
/* ๊ตฌ๋งค๋‚ด์—ญ์ด ์—†๋Š” ํšŒ์› ํ”„๋กœ์‹œ์ € ์ƒ์„ฑ */

Delimiter //

CREATE PROCEDURE spGetBuyerAll ()
Begin

	-- ์กฐํšŒํ•  Select๋ฌธ ์ƒ์„ฑ
	SELECT *
	FROM viewgetbuyerall;

END //
Delimiter ;

 

 

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ  ]

 

 

SELECT buyer_id, buyer_name,
		 SUM(nvl(cart_qty * prod_sale, 0)) AS total
FROM buyer
		LEFT OUTER JOIN prod
			ON(buyer_id = prod_buyer)
		LEFT OUTER JOIN cart
			ON(prod_id = cart_prod
				AND LEFT(cart_no, 4)='2005')
GROUP BY buyer_id, buyer_name;

SELECT buyer_id, prod_name
FROM viewgetbuyerall INNER JOIN prod
		ON(buyer_id = prod_buyer);

CALL spGetBuyerAll();

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•

loading