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

[Database] HeidiSQL ์กฐ์ธ [ํฌ๋กœ์Šค ์กฐ์ธ(Cross Join), ์ด๋„ˆ์กฐ์ธ(Inner Join), ์•„์šฐํ„ฐ ์กฐ์ธ(Outer Join), ์…€ํ”„ ์กฐ์ธ(Self Join)], union, exists, update

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

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

<์กฐ์ธ(join) ๊ตฌ๋ถ„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•>

 

 

 - Inner Join ๋ฐฉ์‹์€ : ์ผ๋ฐ˜๋ฐฉ์‹ or ํ‘œ์ค€๋ฐฉ์‹ ๋ชจ๋‘ ํ‘œ์ค€์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋จ

 

 

 (Inner Join - ์ผ๋ฐ˜๋ฐฉ์‹)
    Select ํ…Œ์ด๋ธ”1.์ปฌ๋Ÿผ1...ํ…Œ์ด๋ธ”n.์ปฌ๋Ÿผ1
    From ํ…Œ์ด๋ธ”1, ํ…Œ์ด๋ธ”2 .... ํ…Œ์ด๋ธ” n
    Where ๊ด€๊ณ„์กฐ๊ฑด(PK = FK)
      And ์ผ๋ฐ˜์กฐ๊ฑด

 

 (Inner Join - ํ‘œ์ค€๋ฐฉ์‹)
    Select ํ…Œ์ด๋ธ”1.์ปฌ๋Ÿผ1...ํ…Œ์ด๋ธ”n.์ปฌ๋Ÿผ1
    From ํ…Œ์ด๋ธ”1 Inner Join ํ…Œ์ด๋ธ”2
     On(๊ด€๊ณ„์กฐ๊ฑด(PK = FK)
         And ์ผ๋ฐ˜์กฐ๊ฑด)
       Inner Join ํ…Œ์ด๋ธ” n
        On(๊ด€๊ณ„์กฐ๊ฑด(PK = FK)
     And ์ผ๋ฐ˜์กฐ๊ฑด)

 


 Group By - ๊ทธ๋ฃน์ด ์žˆ๋Š” ๊ฒฝ์šฐ
 Having   - ๊ทธ๋ฃน ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ฒฝ์šฐ
 Order By - ์ •๋ ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ

 

 

 

 

1. Join์˜ ์ข…๋ฅ˜

 

ํฌ๋กœ์Šค ์กฐ์ธ(Cross Join), ์ด๋„ˆ์กฐ์ธ(Inner Join), ์•„์šฐํ„ฐ ์กฐ์ธ(Outer Join)

 

 

 

 

[ํฌ๋กœ์Šค ์กฐ์ธ (Cross Join)]

 

-- :์•„๋ž˜์™€ ๊ฐ™์ด ๋‘ ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ด€๊ณ„ ์กฐ๊ฑด ์—†์ด ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ
-- : ํ–‰์˜ ๊ฐฏ์ˆ˜ = ํ…Œ์ด๋ธ”ํ–‰ ์ „์ฒด๊ฐฏ์ˆ˜ * ํ…Œ์ด๋ธ”ํ–‰ ์ „์ฒด๊ฐฏ์ˆ˜

 

 

 

[  ํ™œ์šฉ ์˜ˆ์‹œ  ]

 

SELECT mem_id, cart_member
FROM member, cart, prod;

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

์œ„ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜ ๊ณ„์‚ฐ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

member์™€ cart์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ 28๊ณผ 135๋ฅผ ๊ณฑํ•œ ๊ฐ’ 279,720์ž…๋‹ˆ๋‹ค.

 

-- 28
SELECT COUNT(*) FROM member;
-- 135
SELECT COUNT(*) FROM cart;

SELECT 28 * 135;

 

 

 

 

[  ์ด๋„ˆ ์กฐ์ธ (Inner Join)  ]

 

 

-- : ๋‘ ํ…Œ์ด๋ธ”๊ฐ„์— PK = FK ์ธ ์กฐ๊ฑด์„ ์ œ์‹œ
-- (์ผ๋ฐ˜๋ฐฉ์‹)
-- : From์ ˆ ๋’ค์— ํ…Œ์ด๋ธ”๋“ค์„ ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉ
-- : Where์ ˆ์— ๊ด€๊ณ„์กฐ๊ฑด์‹(PK = FK)์„ ์ถ”๊ฐ€ํ•จ
-- : ๊ด€๊ณ„์กฐ๊ฑด์‹์€ ์ตœ์†Œํ•œ (์‚ฌ์šฉ๋œ ํ…Œ์ด๋ธ”์˜ ๊ฐฏ์ˆ˜ - 1)๋งŒํผ ์ œ์‹œ๋˜์–ด์•ผ ํ•จ

 

 

 

[  ํ™œ์šฉ ์˜ˆ์‹œ  (์ผ๋ฐ˜ ๋ฐฉ์‹)  ]

 

-- (์ผ๋ฐ˜๋ฐฉ์‹)
-- : From์ ˆ ๋’ค์— ํ…Œ์ด๋ธ”๋“ค์„ ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉ
-- : Where์ ˆ์— ๊ด€๊ณ„์กฐ๊ฑด์‹(PK = FK)์„ ์ถ”๊ฐ€ํ•จ
-- : ๊ด€๊ณ„์กฐ๊ฑด์‹์€ ์ตœ์†Œํ•œ (์‚ฌ์šฉ๋œ ํ…Œ์ด๋ธ”์˜ ๊ฐฏ์ˆ˜ - 1)๋งŒํผ ์ œ์‹œ๋˜์–ด์•ผ ํ•จ
SELECT mem_id, mem_name, cart_prod, cart_qty, prod_name
FROM member, cart, prod
-- ๊ด€๊ณ„์กฐ๊ฑด ์ถ”๊ฐ€(PK = FK)
WHERE mem_id = cart_member 
  AND cart_prod = prod_id
  -- ์ผ๋ฐ˜์กฐ๊ฑด ์ถ”๊ฐ€
  AND mem_add1 LIKE '์„œ์šธ%';

 

 

 

[  ํ™œ์šฉ ์˜ˆ์‹œ  (Ansi ํ‘œ์ค€๋ฐฉ์‹)  ]

 

-- (inner join Ansi ํ‘œ์ค€๋ฐฉ์‹)
SELECT mem_id, mem_name, cart_prod, cart_qty, prod_name
FROM member 
			INNER JOIN cart
			 ON(mem_id = cart_member
			  -- ์ผ๋ฐ˜์กฐ๊ฑด ์ถ”๊ฐ€
			  AND mem_add1 LIKE '์„œ์šธ%')
			Inner JOIN prod
			 ON(cart_prod = prod_id);

 

 

 

 

[  ํ™œ์šฉ ์˜ˆ์‹œ  (Ansi ํ‘œ์ค€๋ฐฉ์‹) where ์ ˆ ์‚ฌ์šฉ  ]

 

-- ์ผ๋ฐ˜์กฐ๊ฑด์„ where ์ ˆ์— ์ถ”๊ฐ€
SELECT mem_id, mem_name, cart_prod, cart_qty, prod_name
FROM member 
			INNER JOIN cart
			 ON(mem_id = cart_member)
			Inner JOIN prod
			 ON(cart_prod = prod_id)
-- ์ผ๋ฐ˜์กฐ๊ฑด ์ถ”๊ฐ€
where mem_add1 LIKE '์„œ์šธ%';

 

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

 

-- [๋ฌธ์ œ]
-- ์ฃผ๋ฌธ ๋‚ด์—ญ์ด ์žˆ๋Š” ์ƒํ’ˆ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
-- ์กฐํšŒ์ปฌ๋Ÿผ : ์ƒํ’ˆ์ฝ”๋“œ, ์ƒํ’ˆ๋ช…, ์ƒํ’ˆ๋ถ„๋ฅ˜๋ช…, ๊ฑฐ๋ž˜์ฒ˜๋ช…
-- ๋‹จ, ์ฃผ๋ฌธ์ˆ˜๋Ÿ‰์ด 5๊ฐœ ์ด์ƒ ์ฃผ๋ฌธํ•œ ๊ฒฝ์šฐ
--     ์ฃผ๋ฌธ ํšŒ์›์˜ ์ง€์—ญ์ด ์„œ์šธ, ๋Œ€์ „, ๊ด‘์ฃผ์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ  1 - select ํ™œ์šฉ]

 

 

SELECT Prod_id, Prod_name, 
(select Lprod_nm FROM lprod WHERE lprod_gu=prod_lgu) AS lprod_nm, 
(select Buyer_name FROM buyer WHERE Buyer_id=prod_buyer) AS buyer_name
FROM prod
WHERE 
prod_id IN (SELECT cart_prod FROM cart WHERE cart_qty >= 5
				AND cart_member IN 
				(SELECT mem_id FROM member WHERE SUBSTRING(mem_add1, 1, 2) IN ('์„œ์šธ', '๋Œ€์ „', '๊ด‘์ฃผ')));

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ  2 - join ํ™œ์šฉ]

 

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ์กฐํšŒ์ปฌ๋Ÿผ : ํšŒ์›์•„์ด๋””, ํšŒ์›์ด๋ฆ„, ์ฃผ๋ฌธ๋ฒˆํ˜ธ, ์ฃผ๋ฌธ์ˆ˜๋Ÿ‰, ์ƒํ’ˆ๋ช… ์กฐํšŒ
-- ์กฐ๊ฑด : ์ฃผ๋ฌธ๋‚ด์—ญ์ด ์žˆ๋Š” ํšŒ์›์ด์–ด์•ผ ํ•จ
--      : ์ฃผ๋ฌธํ•œ ํšŒ์› ๊ฑฐ์ฃผ์ง€๊ฐ€ ์„œ์šธ์— ๊ฑฐ์ฃผํ•˜๋Š” ํšŒ์›์ด์–ด์•ผ ํ•จ
--      : ์ƒํ’ˆ๋ช…์— ์ปดํ“จํ„ฐ๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด์•ผ ํ•จ
-- ์ •๋ ฌ : ์ฃผ๋ฌธ์ˆ˜๋Ÿ‰์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 1 - inner join ์ผ๋ฐ˜ ๋ฐฉ์‹  ]

 

-- ์ผ๋ฐ˜๋ฐฉ์‹
SELECT Mem_id, Mem_name, Cart_no, Cart_qty, Prod_name
FROM member, cart, prod
-- ๊ด€๊ณ„์กฐ๊ฑด
WHERE mem_id = cart_member
  AND cart_prod = prod_id
-- ์ผ๋ฐ˜์กฐ๊ฑด
  AND mem_add1 LIKE '%์„œ์šธ%'
  AND prod_name LIKE '%์ปดํ“จํ„ฐ%'
ORDER BY Cart_qty desc;

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 2 - inner join Ansi ํ‘œ์ค€ ๋ฐฉ์‹ ]

 

-- Ansi ํ‘œ์ค€ ๋ฐฉ์‹
SELECT Mem_id, Mem_name, Cart_no, Cart_qty, Prod_name
FROM member
		INNER JOIN cart
		ON (mem_id = cart_member
			AND mem_add1 LIKE '%์„œ์šธ%')
		INNER JOIN prod
		ON (cart_prod = prod_id
			AND prod_name LIKE '%์ปดํ“จํ„ฐ%')
ORDER BY Cart_qty desc;

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 3 - inner join Ansi ํ‘œ์ค€ ๋ฐฉ์‹ (where์ ˆ ์‚ฌ์šฉ)]

 

-- Ansi ํ‘œ์ค€ ๋ฐฉ์‹
SELECT Mem_id, Mem_name, Cart_no, Cart_qty, Prod_name
-- ๊ด€๊ณ„์กฐ๊ฑด
FROM member
		INNER JOIN cart
		ON (mem_id = cart_member)
		INNER JOIN prod
		ON (cart_prod = prod_id)
-- ์ผ๋ฐ˜์กฐ๊ฑด
WHERE mem_add1 LIKE '%์„œ์šธ%'
  AND prod_name LIKE '%์ปดํ“จํ„ฐ%'
ORDER BY Cart_qty desc;

 

 

 

[  ๊ฒฐ๊ณผ - ๊ฒฐ๊ณผ ์—†์Œ  ]

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ์ƒํ’ˆ๋ถ„๋ฅ˜๋ณ„ ์ƒํ’ˆ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
-- ์กฐํšŒ์ปฌ๋Ÿผ : ์ƒํ’ˆ๋ถ„๋ฅ˜์ฝ”๋“œ, ์ƒํ’ˆ๋ถ„๋ฅ˜๋ช…, ๋ถ„๋ฅ˜๋ณ„ ์ƒํ’ˆ์˜ ๊ฐฏ์ˆ˜
-- ์ •๋ ฌ : ๋ถ„๋ฅ˜๋ณ„๊ฐฏ์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 1 - inner join ์ผ๋ฐ˜ ๋ฐฉ์‹  ]

 

-- ์ผ๋ฐ˜๋ฐฉ์‹
SELECT lprod_gu, lprod_nm, COUNT(prod_id) AS prod_cnt
FROM lprod, prod
WHERE lprod_gu = prod_lgu
GROUP BY lprod_gu, lprod_nm 
ORDER BY prod_cnt;

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 2 - inner join Ansi ํ‘œ์ค€ ๋ฐฉ์‹ ]

 

 

-- ansi ํ‘œ์ค€ ๋ฐฉ์‹
SELECT lprod_gu, lprod_nm, COUNT(prod_id) AS prod_cnt
FROM lprod
	  INNER JOIN prod
	    ON (lprod_gu = prod_lgu)
GROUP BY lprod_gu, lprod_nm 
ORDER BY prod_cnt;

 

 

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

- [๋ฌธ์ œ]
/*
 - ํšŒ์›์•„์ด๋””, ํšŒ์›์ด๋ฆ„, ์ฃผ๋ฌธ์ˆ˜๋Ÿ‰, ์ƒํ’ˆ๋ช… ์กฐํšŒ
 - ๋‹จ, ๊ตฌ๋งค์ƒํ’ˆ์˜ ๊ฑฐ๋ž˜์ฒ˜ ์ฃผ์†Œ๊ฐ€ ์„œ์šธ, ๋Œ€์ „, ๊ด‘์ฃผ์ธ ๊ฒฝ์šฐ
 -    ์ƒํ’ˆ๋ถ„๋ฅ˜๋ช…์— '์ „์ž'๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ
 -    ์ฃผ๋ฌธ์ˆ˜๋Ÿ‰์ด 5์ด์ƒ์ธ ๊ฒฝ์šฐ
 - ์ •๋ ฌ์€ ์•„์ด๋”” ์˜ค๋ฆ„์ฐจ์ˆœ, ์ฃผ๋ฌธ์ˆ˜๋Ÿ‰ ๋‚ด๋ฆผ์ฐจ์ˆœ
*/

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 1 - inner join ์ผ๋ฐ˜ ๋ฐฉ์‹  ]

 

 

-- ์ผ๋ฐ˜๋ฐฉ์‹
SELECT Mem_id, Mem_name, Cart_qty, Prod_name
FROM member, cart, prod, buyer, lprod
WHERE mem_id = cart_member
  AND cart_prod = prod_id
  AND prod_buyer = buyer_id
  AND prod_lgu = lprod_gu
  AND SUBSTRING(Buyer_add1, 1, 2) IN ('์„œ์šธ', '๋Œ€์ „', '๊ด‘์ฃผ')
  AND Lprod_nm LIKE '%์ „์ž%'
  AND Cart_qty >= 5
  ORDER BY mem_id ASC, Cart_qty desc;

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 2 - inner join Ansi ํ‘œ์ค€ ๋ฐฉ์‹ ]

 

 

-- Ansi ํ‘œ์ค€ ๋ฐฉ์‹
SELECT Mem_id, Mem_name, Cart_qty, Prod_name
FROM member
		inner join cart
		ON (mem_id = cart_member)
		inner join prod
		ON (cart_prod = prod_id
		    AND Cart_qty >= 5)
		inner join buyer
		ON (prod_buyer = buyer_id
		    AND SUBSTRING(Buyer_add1, 1, 2) IN ('์„œ์šธ', '๋Œ€์ „', '๊ด‘์ฃผ'))
		inner join lprod
		ON (prod_lgu = lprod_gu
		    AND Lprod_nm LIKE '%์ „์ž%')
  ORDER BY mem_id ASC, Cart_qty desc;

 

[  ๊ฒฐ๊ณผ  ] - ์ถœ๋ ฅ ๊ฒฐ๊ณผ ์—†์Œ

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

 

-- [๋ฌธ์ œ]
-- ์ฃผ๋ฌธ๋‚ด์—ญ์ด ์žˆ๋Š” ํšŒ์›๋ณ„๋กœ ์ง€๊ธˆ๊นŒ์ง€ ์ด ์ง€์ถœํ•œ ์ด์•ก ์กฐํšŒํ•˜๊ธฐ
-- ์กฐํšŒ์ปฌ๋Ÿผ : ํšŒ์›์•„์ด๋””, ํšŒ์›์ด๋ฆ„, ์ด์ง€์ถœ์•ก

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 1 - inner join ์ผ๋ฐ˜ ๋ฐฉ์‹  ]

 

-- ์ผ๋ฐ˜๋ฐฉ์‹
SELECT Mem_id, Mem_name, SUM(cart_qty * prod_sale) AS total
FROM member, cart, prod
WHERE mem_id = cart_member
  AND cart_prod = prod_id
GROUP BY mem_id, mem_name
ORDER BY total desc;

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 2 - inner join Ansi ํ‘œ์ค€ ๋ฐฉ์‹ ]

 

 

-- ํ‘œ์ค€๋ฐฉ์‹
SELECT Mem_id, Mem_name, SUM(cart_qty * prod_sale) AS total
FROM member
		INNER join cart
		ON(mem_id = cart_member)
		INNER join prod
		ON(cart_prod = prod_id)
GROUP BY mem_id, mem_name
ORDER BY total desc;

 

 

 

[  ๊ฒฐ๊ณผ  ] 

 

 

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- ์œ„ ๋ฌธ์ œ์— ์ด์–ด์„œ
-- ์œ„ ๊ฒฐ๊ณผ์—์„œ ๊ฐ€์žฅ ์ง€์ถœ์ด ํฐ ๊ฐ’๊ณผ, ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์กฐํšŒํ•ด ์ฃผ์„ธ์š”
-- ์กฐํšŒ ๊ฐ’ : ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’

 

 

 

[  from ์ ˆ ์•ˆ์— ์„œ๋ธŒ์ฟผ๋ฆฌ ]

 

 

๊ฐ€์ƒํ…Œ์ด๋ธ”

 

-- ๊ฐ€์ƒํ…Œ์ด๋ธ” ๊ฐœ๋…์ด ์ ์šฉ๋จ(Inline view)
--  : From์ ˆ ๋’ค์— ํ…Œ์ด๋ธ” ๋Œ€์‹ ์— Sub Query๋ฅผ ์‚ฌ์šฉํ•จ
--  : Sub Query์˜ Selectํ•œ ํ–‰๋ ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋กœ๋ฆฌ์— ์ ์žฌ์‹œ์ผœ์„œ ์‚ฌ์šฉ
--  : ํ–‰๋ ฌ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•œ ๊ฐœ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—
--    ๊ฐ€์ƒํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ์นญํ•ฉ๋‹ˆ๋‹ค.
--  : ๊ฐ€์ƒํ…Œ์ด๋ธ”์€ ๋ณ„์นญ์„ ์ด์šฉํ•ด์„œ ํ…Œ์ด๋ธ” ์ด๋ฆ„์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

[  ์กฐ๊ฑด  ]

 

-- ์œ„ ๋ฌธ์ œ์— ์ด์–ด์„œ
-- ์œ„ ๊ฒฐ๊ณผ์—์„œ ๊ฐ€์žฅ ์ง€์ถœ์ด ํฐ ๊ฐ’๊ณผ, ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์กฐํšŒํ•ด ์ฃผ์„ธ์š”
-- ์กฐํšŒ ๊ฐ’ : ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’

 

 

 

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

 

SELECT MAX(a.total), MIN(total)
from(SELECT Mem_id, Mem_name, SUM(cart_qty * prod_sale) AS total
FROM member, cart, prod
  WHERE mem_id = cart_member
  AND cart_prod = prod_id
GROUP BY mem_id, mem_name
ORDER BY total DESC) A;

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

-- [๋ฌธ์ œ]
/*
 - ํšŒ์›์•„์ด๋”” b001 ํšŒ์›์˜ ๋งˆ์ผ๋ฆฌ์ง€๊ฐ’๋ณด๋‹ค ํฐ ํšŒ์›์ •๋ณด ์กฐํšŒํ•˜๊ธฐ
 - ์กฐํšŒ์ปฌ๋Ÿผ : ํšŒ์›์•„์ด๋””, ์ด๋ฆ„
 - 2๊ฐ€์ง€ ์ด์ƒ์˜ ๋ฐฉ๋ฒ• ์ ์šฉ
*/

 

 

 

 

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

 

SELECT Mem_id, Mem_name
FROM member
WHERE Mem_mileage > (SELECT mem_mileage 
                     FROM member 
							WHERE mem_id='b001');

 

 

 

 

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

 

SELECT Mem_id, Mem_name
FROM member,
   (SELECT mem_mileage 
                     FROM member 
							WHERE mem_id='b001') mem
WHERE member.mem_mileage > mem.mem_mileage;

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 3 - self join  ]

 

/*self join์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ*/
SELECT M1.mem_id, M1.mem_name
FROM  member M1, member M2
WHERE M2.mem_id = 'b001'
  AND M1.mem_mileage > M2.mem_mileage;

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ํšŒ์›๋ณ„ ๊ตฌ๋งค๊ธˆ์•ก์˜ ์ด์•ก์„ ์กฐํšŒํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
-- 2005๋…„ 5์›”์— ๊ตฌ๋งคํ•œ ๋‚ด์—ญ์ž…๋‹ˆ๋‹ค.
-- ์กฐํšŒ์ปฌ๋Ÿผ : ํšŒ์›์ด๋ฆ„, ๊ตฌ๋งค๊ธˆ์•ก์ด์•ก

 

 

 

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

 

-- (์ผ๋ฐ˜๋ฐฉ์‹)
SELECT mem_name,
		sum(cart_qty * prod_sale) AS total
FROM member, cart, prod
 WHERE mem_id = cart_member
  AND cart_prod = prod_id
  AND cart_no LIKE '200505%'
GROUP BY mem_id, mem_name
ORDER BY total DESC;

 

 

 

[  ์ž‘์„ฑ ์ฝ”๋“œ 2  - Ansi ํ‘œ์ค€ ๋ฐฉ์‹  ]

 

 

-- (ํ‘œ์ค€๋ฐฉ์‹)
SELECT mem_name,
		sum(cart_qty * prod_sale) AS total
FROM member
	inner join cart
	ON (mem_id = cart_member
	   AND cart_no LIKE '200505%')
	inner join prod
	ON (cart_prod = prod_id)
 WHERE mem_id = cart_member
GROUP BY mem_id, mem_name
ORDER BY total DESC;

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

 

 

 

[Outer Join]

 

 - ํŠน์ • ํ…Œ์ด๋ธ” ์ „์ฒด์— ๋Œ€ํ•œ ์ง‘๊ณ„๋ฅผ ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ


 - Outer Join ์ข…๋ฅ˜
   : Left Outer Join : ํ…Œ์ด๋ธ” ์ˆœ์„œ ์ค‘ ์™ผ์ชฝ์— ์œ„์น˜ํ•œ ํ…Œ์ด๋ธ” ์ „์ฒด
   : Right Outer Join : ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•œ ํ…Œ์ด๋ธ” ์ „์ฒด
   : Full Outer Join : ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ ์ „์ฒด

                              : Oracle DB์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ


 - Outer Join ๊ฐœ๋…
   : Outer Join์€ ํ‘œ์ค€๋ฐฉ์‹์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ,
   : ์ผ๋ฐ˜ ์กฐ๊ฑด์€ ๋ฌด์กฐ๊ฑด On() ๋‚ด๋ถ€์— ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
   : Inner Join์„ ๋งŒ์กฑํ•ด์•ผ ํ•จ(Inner Join ๊ฐœ๋…์„ ๊ทธ๋Œ€๋กœ ์ ์šฉ)
   : Left or Right ๊ธฐ์ค€์œผ๋กœ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ ์กฐ๊ฑด๋Œ€๋กœ ์กฐํšŒ, ๋‹ค๋ฅด๋ฉด Null ์กฐํšŒ

 

 

 

 

 

Left outer join ์˜ˆ์ œ

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ํšŒ์›๋ณ„ ๊ตฌ๋งค๊ธˆ์•ก์˜ ์ด์•ก์„ ์กฐํšŒํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
-- 2005๋…„ 5์›”์— ๊ตฌ๋งคํ•œ ๋‚ด์—ญ์ž…๋‹ˆ๋‹ค.
-- ์กฐํšŒ์ปฌ๋Ÿผ : ํšŒ์›์ด๋ฆ„, ๊ตฌ๋งค๊ธˆ์•ก์ด์•ก
-- ํšŒ์› ์ „์ฒด์— ๋Œ€ํ•ด์„œ ์œ„ ์กฐ๊ฑด์œผ๋กœ ์กฐํšŒํ•ด์ฃผ์„ธ์š”
-- ์ด ํšŒ์›์€ 28๋ช… ์ž…๋‹ˆ๋‹ค.
-- null ๊ฐ’์€ 0์œผ๋กœ ๋ณ€ํ™˜ํ•˜์„ธ์š”.

 

 

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

 

 

-- (ํ‘œ์ค€๋ฐฉ์‹)
SELECT mem_name,
		SUM(nvl(cart_qty * prod_sale, 0)) AS total
FROM member
	left outer join cart
	ON (mem_id = cart_member
	   AND cart_no LIKE '200505%')
	left outer join prod
	ON (cart_prod = prod_id)
GROUP BY mem_id, mem_name
ORDER BY total DESC;

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ์ƒํ’ˆ๋ถ„๋ฅ˜ ์ „์ฒด์— ๋Œ€ํ•œ ์ƒํ’ˆ ์ข…๋ฅ˜์˜ ๊ฐฏ์ˆ˜ ์ง‘๊ณ„ํ•˜๊ธฐ

 

 

 

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

 

SELECT lprod_gu,COUNT(prod_id) AS cnt
FROM lprod
	LEFT OUTER JOIN prod
	ON (lprod_gu = prod_lgu)
GROUP BY lprod_gu;

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
/*
2005๋…„๋„ ์›”๋ณ„ ํŒ๋งค ํ˜„ํ™ฉ ๊ฒ€์ƒ‰ํ•˜๊ธฐ
์กฐํšŒ ์ปฌ๋Ÿผ : ํŒ๋งค์›”, ์›”๋ณ„ ์ดํŒ๋งค์ˆ˜๋Ÿ‰, ์›”๋ณ„ ์ดํŒ๋งค๊ธˆ์•ก
*/

 

 

 

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

 

SELECT SUBSTRING(cart_no, 5, 2) AS MONTH,
			sum(cart_qty) AS total_qty,
			sum(cart_qty * prod_sale) AS total
FROM cart 
		left OUTER join prod
		ON(cart_prod = prod_id
		   AND SUBSTRING(cart_no, 1, 4) = '2005')
GROUP BY MONTH;

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- 2005๋…„๋„์— ๋Œ€ํ•œ ์ „์ฒด ๊ฑฐ๋ž˜์ฒ˜๋ณ„ ์ด๋งค์ถœ๊ธˆ์•ก ์กฐํšŒํ•˜๊ธฐ
-- ์กฐํšŒ ์ปฌ๋Ÿผ : ๊ฑฐ๋ž˜์ฒ˜์ฝ”๋“œ, ๊ฑฐ๋ž˜์ฒ˜๋ช…, ์ด๋งค์ถœ๊ธˆ์•ก
-- ์ •๋ ฌ : ์ด๋งค์ถœ๊ธˆ์•ก ์˜ค๋ฆ„์ฐจ์ˆœ

 

 

 

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

 

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 cart_no LIKE '2005%')
GROUP BY buyer_id, buyer_name
ORDER BY total desc;

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  Union  ]

 

-- : ์กฐํšŒ๊ฒฐ๊ณผ์™€ ์กฐํšŒ๊ฒฐ๊ณผ๋ฅผ ํ–‰๋‹จ์œ„๋กœ ํ•ฉ์น˜๋Š” ๊ธฐ๋Šฅ
-- : ์กฐํšŒ๊ฒฐ๊ณผ๋“ค๊ฐ„์˜ ์ปฌ๋Ÿผ์˜ ๊ฐฏ์ˆ˜๋Š” ๋™์ผํ•ด์•ผ ํ•จ
-- : ์กฐํšŒ๊ฒฐ๊ณผ๋“ค๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๋™์ผํ•ด์•ผ ํ•จ

 

 

-- Union์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด
-- : ์ •๋ ฌ์€ ์ œ์ผ ๋งˆ์ง€๋ง‰์— ์ •์˜ํ•ด์•ผ ํ•จ
-- : ์ปฌ๋Ÿผ๋ช…์€ ์ฒซ๋ฒˆ์žฌ select๋ฌธ์˜ ์ปฌ๋Ÿผ์ด๋ฆ„์„ ๋”ฐ๋ฆ„

 


-- Union : ์ค‘๋ณต ์ œ๊ฑฐ
-- Union All : ์ค‘๋ณต ํฌํ•จ(์‹ค์ œ ์ „์ฒด)


 

 

[  ํ™œ์šฉ ์˜ˆ์‹œ  ]

SELECT 'member', mem_id, mem_name
FROM member
UNION
SELECT 'cart',cart_member, cart_prod
FROM cart;

 

 

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ํšŒ์›์ „์ฒด์— ๋Œ€ํ•œ ์ด๊ตฌ๋งค๊ธˆ์•ก์„ ์กฐํšŒํ•˜๊ธฐ
-- ์กฐํšŒ์ปฌ๋Ÿผ : ํšŒ์›์•„์ด๋””, ํšŒ์›์ด๋ฆ„, ์ด๊ตฌ๋งค๊ธˆ์•ก
-- ๋งˆ์ง€๋ง‰ ํ–‰์—๋Š” ์ด๊ตฌ๋งค๊ธˆ์•ก์˜ ์ดํ•ฉ์„ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์–ด์š”

 

 

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

 

SELECT mem_id, mem_name,
			SUM(nvl(cart_qty * prod_sale, 0)) AS total
FROM member
		LEFT OUTER JOIN cart
		ON(mem_id = cart_member)
		LEFT OUTER JOIN prod
		ON(cart_prod = prod_id)
GROUP BY mem_id, mem_name
UNION
SELECT '', '', SUM(nvl(cart_qty * prod_sale, 0)) AS total
FROM member
		LEFT OUTER JOIN cart
		ON(mem_id = cart_member)
		LEFT OUTER JOIN prod
		ON(cart_prod = prod_id)
		GROUP BY '', '';

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

-- exists()

 

--  : ์กฐํšŒ๊ฒฐ๊ณผ๊ฐ€ 1๊ฑด์ด๋ผ๋„ ์žˆ์œผ๋ฉด True
--  :            0๊ฑด์ด๋ฉด False
--  : ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ ์šฉ (๋‹ค์ค‘์ปฌ๋Ÿผ์˜ ๋‹ค์ค‘ํ–‰ ๋ชจ๋‘ ๊ฐ€๋Šฅ)

 

 

 

[  ์กฐ๊ฑด  ]

 

 

-- [๋ฌธ์ œ]
-- ๊ตฌ๋งค(์ฃผ๋ฌธ) ๋‚ด์—ญ์ด ์—†๋Š” ํšŒ์›๋งŒ ์กฐํšŒํ•ด์ฃผ์„ธ์š”.
-- exists ์‚ฌ์šฉ

 

 

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

 

SELECT mem_id, mem_name
FROM member
WHERE EXISTS(SELECT *
				FROM cart
				WHERE cart_member = mem_id);

 

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

 

 

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

 

 

-- [๋ฌธ์ œ]
-- ๊ตฌ๋งค(์ฃผ๋ฌธ) ๋‚ด์—ญ์ด ์—†๋Š” ํšŒ์›๋งŒ ์กฐํšŒํ•ด์ฃผ์„ธ์š”.
-- exists ์‚ฌ์šฉ
SELECT Mem_id, mem_name
FROM member
WHERE not exists(SELECT *
					from cart
					where mem_id=cart_member);

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [ ๋ฌธ์ œ ]
-- 2005๋…„๋„ ๊ตฌ๋งค๋‚ด์—ญ์ด ์žˆ๋Š” ํšŒ์›์— ๋Œ€ํ•œ
-- ํšŒ์›์•„์ด๋””, ํšŒ์›์ด๋ฆ„, ๋งˆ์ผ๋ฆฌ์ง€ ์กฐํšŒ
-- ๋‹จ, ๊ตฌ๋งค๋‚ด์—ญ์ด ์žˆ๋Š” ํšŒ์›์˜ ์ด๊ตฌ๋งค๊ธˆ์•ก์ด
--     3์ฒœ๋งŒ์› ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์กฐํšŒ

 

 

 

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

 

SELECT mem_id, mem_name, mem_mileage
FROM member
WHERE EXISTS(
		SELECT SUM(cart_qty * prod_sale)
				FROM cart, prod
				WHERE cart_member = mem_id
				AND cart_prod = prod_id
				AND cart_no LIKE '2005%'
				HAVING SUM(cart_qty * prod_sale) >= 30000000
				);

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

[  Update  ]

 

-- ์ˆ˜์ • ๋ฐ ์‚ญ์ œ ์‹œ
-- ๊ธฐ์ค€ ์ปฌ๋Ÿผ์€ ๋ˆ„๊ตฌ?
-- PK๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ–‰์„ ์กฐ๊ฑด์ฒ˜๋ฆฌ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

[  ์กฐ๊ฑด  ]

 

 

-- ์ˆ˜์ •ํ•˜๊ธฐ
-- ํšŒ์›์•„์ด๋”” a001, b001์ธ ํšŒ์›์˜
-- ๋งˆ์ผ๋ฆฌ์ง€ ๊ฐ’์„ 2๋กœ ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”
-- (๊ฒ€์ฆ์šฉ select ๋ฌธ)

 

 

 

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

 

-- (๊ฒ€์ฆ์šฉ select ๋ฌธ)
SELECT mem_id, mem_mileage
FROM member
WHERE mem_id IN ('a001', 'b001');

--์ˆ˜์ •ํ•˜๊ธฐ
update member
	SET mem_mileage = 2
WHERE mem_id IN ('a001', 'b001');

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ๊ตฌ๋งค๋‚ด์—ญ์ด ์žˆ๋Š” ํšŒ์›์˜ ๋งˆ์ผ๋ฆฌ์ง€ ๊ฐ’์„
-- 3์œผ๋กœ ์ผ๊ด„ ์ˆ˜์ •์ฒ˜๋ฆฌ ํ•ด ์ฃผ์„ธ์š”.

 

 

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

 

-- (๊ฒ€์ฆ์šฉ select ๋ฌธ)
SELECT mem_id, mem_mileage
FROM member
WHERE EXISTS
(SELECT cart_member FROM cart WHERE cart_member = mem_id);

UPDATE member
   SET mem_mileage = 3
   WHERE EXISTS
(SELECT cart_member FROM cart WHERE cart_member = mem_id);

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

[  ์กฐ๊ฑด  ]

 

-- [๋ฌธ์ œ]
-- ์ƒํ’ˆ๋ถ„๋ฅ˜ ์ „์ฒด์— ๋Œ€ํ•œ ์ƒํ’ˆ์ด๋ฆ„๊ณผ ๊ตฌ๋งค์ˆ˜๋Ÿ‰์˜ ์ดํ•ฉ์„ ์กฐํšŒ
-- ๋‹จ, ๊ตฌ๋งค๋…„๋„๊ฐ€ 2005๋…„๋„
--     prod, cart ํ…Œ์ด๋ธ”๋งŒ ์‚ฌ์šฉ
--     ์กฐํšŒ์ปฌ๋Ÿผ : ์ „์ฒด์ƒํ’ˆ๋ถ„๋ฅ˜์ฝ”๋“œ, ์ƒํ’ˆ๋ช…, ๊ตฌ๋งค์ˆ˜๋Ÿ‰์˜ ์ดํ•ฉ

 

 

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

 

SELECT LEFT(prod_id, 4) AS lgu,
		 prod_name,
		 SUM(cart_qty) AS total
FROM prod 
		LEFT OUTER JOIN cart
		ON(prod_id = cart_prod
			AND cart_no LIKE '2005%')
GROUP BY LEFT(prod_id, 4), prod_name;

 

 

 

[  ๊ฒฐ๊ณผ  ]

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•

loading