๐Ÿ’ป

Oracle DBMS ๋ฐ SQL - ์„œ๋ธŒ์ฟผ๋ฆฌ(SUBQUERY) ๋ณธ๋ฌธ

KITRI/ORACLE

Oracle DBMS ๋ฐ SQL - ์„œ๋ธŒ์ฟผ๋ฆฌ(SUBQUERY)

๋˜ํšจ๋‹ˆ 2020. 4. 14. 14:46

--SubQuery : SELECT ๋ฌธ ๋‚ด์— ๋˜ ๋‹ค๋ฅธ SELECT๋ฌธ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ํฌํ•จ SELECT ์„œ๋ธŒ์ฟผ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค.
--                1) ๋‹จ์ผ์—ด/ ๋‹จ์ผํ–‰ (1ํ–‰ 1์—ด)
--                2) ๋‹จ์ผ์—ด/ ๋‹ค์ค‘ํ–‰ (2ํ–‰์ด์ƒ 1์—ด)
--                3) ๋‹ค์ค‘์—ด/ ๋‹จ์ผํ–‰
--                4) ๋‹ค์ค‘์—ด/ ๋‹ค์ค‘ํ–‰
--                ์ฐธ๊ณ ) SubQuery ์ž‘์„ฑ์„ WHERE์ ˆ ๋˜๋Š” FROM์ ˆ์— ํ•œ๋‹ค.
--                Join & SubQuery
--์žญ์‚ฌ์›๊ณผ ๊ฐ™์€ ๋ถ€์„œ์— ๊ทผ๋ฌดํ•˜๋Š” ์‚ฌ์›์„ ๊ฒ€์ƒ‰/ ๋ถ€์„œ(๋ถ€์„œ๋ช…, ๋ถ€์„œ์ฝ”๋“œ)
--1. ๋ถ€์„œ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
--2. ๋ถ€์„œ๋ช…์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• => Join์„ ํ•ด์•ผํ•œ๋‹ค. 

 

 

 

--1. ๋‹จ์ผํ–‰ * ๋‹จ์ผํ–‰(1ํ–‰ 1์—ด) WHERE

--์‚ฌ์›๋“ค ์ค‘์—์„œ ์—ฐ๋ด‰์ด Jack ์‚ฌ์› ์—ฐ๋ด‰๋ณด๋‹ค ๋งŽ๊ณ , Lex์‚ฌ์›์˜ ์—ฐ๋ด‰๋ณด๋‹ค ์ ๊ฒŒ ๋ฐ›๋Š” ์‚ฌ์› ๊ฒ€์ƒ‰

--<=> Self Join ์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๊ธฐ   

--ํ…Œ์ด๋ธ” 3๊ฐœ๊ฐ€ ํ•„์š”ํ•˜๋‹ค       

 

 

 

--2. ๋‹ค์ค‘ํ–‰ * ๋‹จ์ผ์—ด(2ํ–‰์ด์ƒ * 1์—ด) WHERE
--      : ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ–‰ ์ผ๋•Œ
--      ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ๋‹ค์ค‘ํ–‰ ์—ฐ์‚ฐ์ž(IN, ALL, ANY, EXIST)

 

--2-1) IN 

 

 

--2-2) ALL : ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ๋น„๊ต ์กฐ๊ฑด์ด ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์™€ ๋ชจ๋“  ๊ฐ’์ด ์ผ์น˜

 

 

--2-3) ANY : ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ๋น„๊ต ์กฐ๊ฑด์ด ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์™€ ํ•˜๋‚˜ ์ด์ƒ์ผ์น˜ ํ•จ/ ์ž‘์€ ๊ฐ’ ๊ธฐ์ค€

 

 

--2-4) EXISTS : ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ๊ฐ’์ด ์ฐฝ์ด ๋‚˜์˜ค๊ธฐํ•˜๋ฉด ๋ฐ”๋กœ ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ด

 

 

--3. ๋‹จ์ผํ–‰ * ๋ณต์ˆ˜์—ด

--๋‹ค์ค‘์—ด, ๋‹ค์ค‘ํ–‰์ด๊ธฐ ๋•Œ๋ฌธ์— = ์—ฐ์‚ฐ์ž ๋ชป์“ด๋‹ค. / IN,ANY,ALL ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. 

 

[์ถ”๊ฐ€]

  • GROUP ํ•จ์ˆ˜๋Š” JOIN์œผ๋กœ ๋ชป๋ฐ”๊พผ๋‹ค.
  • ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”๋งŒ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฌธ์„ => JOIN์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

 

 

--4. FROM ์„œ๋ธŒ์ฟผ๋ฆฌ : FROM ์ ˆ์— ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (In-Line View)
--ํ…Œ์ด๋ธ” ์ฒ˜๋Ÿผ ์กฐ์ธํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, Join + SubQuery

 

--> ์œ„์—์„œ WHERE ์ ˆ์—์„œ SubQuery๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ๋น„๊ตํ•ด๋ณด์ž.

 

--> ์œ„์—์„œ WHERE ์ ˆ์—์„œ SubQuery๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ๋น„๊ตํ•ด๋ณด์ž.

 

 

 

โ˜…

 

โ˜…โ˜…

 

[์ •๋ฆฌ]

  • GROUP BY ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” ์—†๋Š” ํ…Œ์ด๋ธ”์ด๋‹ˆ๊น ์กฐ์ธ๋ถˆ๊ฐ€
  • ์ธ๋ผ์ธ ๋ทฐ๋Š” ๊ฑฐ์˜ ๋‹ค ๊ฐ€๋Šฅ
  • Where์ ˆ SubQuery๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์ ธ์˜จ ํ•„๋“œ์™€ ๋™์ผํ•œ ํ•„๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด ์•ˆ๋œ๋‹ค. 

-- ALL, IN, ANY ์—ฐ์‚ฐ์ž ๋งŽ์ด ์“ฐ์ธ๋‹ค. ์ž˜ ์•Œ์•„๋‘๊ธฐ!

โ˜…โ˜…โ˜…

 

--5. ์ง‘ํ•ฉ(SET) ์—ฐ์‚ฐ์ž / UNION, UNION ALL, INTERSECT, MINUS 
--5-1) ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ์ƒ์„ฑ

 

--5-2) UNION : ๋‘ ์งˆ์˜ ๊ฒฐ๊ณผ๊ฐ’์˜ ํ•ฉ์œผ๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•จ

 

--5-3) UNION ALL : ๋‘ ์งˆ์˜ ๊ฒฐ๊ณผ๊ฐ’์˜ ํ•ฉ์œผ๋กœ ์ค‘๋ณต์„ ํฌํ•จ

 

--5-4) INTERSECT : ๋‘ ์งˆ์˜ ๊ฒฐ๊ณผ๊ฐ’์˜ ๊ณตํ†ต๋˜๋Š” ๊ฐ’

 

--5-5) MINUS : ์ฒซ๋ฒˆ์งธ ์งˆ์˜ ๊ฒฐ๊ณผ์—์„œ ๋‘๋ฒˆ์งธ ์งˆ์˜ ๊ฒฐ๊ณผ์— ์ž‡๋Š” ํ–‰์„ ์ œ๊ฑฐํ•œ ๊ฐ’

 

 

๋ฐ˜์‘ํ˜•
Comments