IT/DataBase

[Oracle]ORACLE SUB QUERY

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2022. 11. 25.

๋ชฉ์ฐจ

    ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋ฉ”์ธ์ฟผ๋ฆฌ์•ˆ์— ๋˜ ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ๊ฑธ ์˜๋ฏธ

    ์ข…๋ฅ˜ : 

    ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ(SELECT์ ˆ์— ์‚ฌ์šฉ), ์ธ๋ผ์ธ๋ทฐ ์„œ๋ธŒ์ฟผ๋ฆฌ(FROM์ ˆ์— ์‚ฌ์šฉ), ์ผ๋ฐ˜ ์„œ๋ธŒ์ฟผ๋ฆฌ(WHERE์ ˆ์— ์‚ฌ์šฉ)

    SELECT col1, (SELECT ...)     -- ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ(Scalar Sub Query): ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์ฒ˜๋Ÿผ ์‚ฌ์šฉ (ํ‘œํ˜„ ์šฉ๋„)
    FROM (SELECT ...)             -- ์ธ๋ผ์ธ ๋ทฐ(Inline View): ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉ (ํ…Œ์ด๋ธ” ๋Œ€์ฒด ์šฉ๋„)
    WHERE col = (SELECT ...)    -- ์ผ๋ฐ˜ ์„œ๋ธŒ์ฟผ๋ฆฌ: ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜(์ƒ์ˆ˜)์ฒ˜๋Ÿผ ์‚ฌ์šฉ (์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์กฐ๊ฑด์ ˆ)
    ์ถœ์ฒ˜: https://data-make.tistory.com/25 [Data Makes Our Future]

     

    oracle sub query

    -- ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ(์‚ฌ์›ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์›๋ช…, ๋ถ€์„œ๋ช…, ๋ถ€์„œํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ช… ์กฐํšŒ)
    SELECT e.ENAME, e.DEPTNO, (SELECT d.DNAME FROM DEPT d WHERE e.DEPTNO=d.DEPTNO) dname
    FROM emp e
    ;
    
    -- ์ธ๋ผ์ธ๋ทฐ ์„œ๋ธŒ์ฟผ๋ฆฌ(๋ถ€์„œ๋ณ„ ์ตœ๋Œ€์—ฐ๋ด‰ ๋ฐ›๋Š” ์‚ฌ๋žŒ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ ์ •๋ณด ์กฐํšŒ)
    SELECT e.ENAME, e.DEPTNO, e.sal
    FROM emp e, (SELECT deptno,max(sal) max_sal FROM emp GROUP BY DEPTNO) i
    WHERE e.SAL = i.max_sal
    ;
    
    -- ์ผ๋ฐ˜ ์„œ๋ธŒ์ฟผ๋ฆฌ
    -- smith๋ณด๋‹ค ๋งŽ์ด ๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ, ์ผ๋‹จ SMITH์˜ ๊ธ‰์—ฌ ์กฐํšŒ๊ฒฐ๊ณผ 800์ด ๋‚˜์™”์Œ
    SELECT * FROM 
    emp WHERE ENAME = 'SMITH'
    ;
    
    -- smith๋ณด๋‹ค ๋งŽ์ด ๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ
    SELECT * FROM 
    emp WHERE sal > 800
    ;
    
    -- smith๋ณด๋‹ค ๋งŽ์ด ๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ(์„œ๋ธŒ์ฟผ๋ฆ ์ด์šฉ) 
    SELECT * FROM 
    emp WHERE sal > (SELECT sal FROM emp WHERE ENAME='SMITH')
    ;

     

    ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์› ํ…Œ์ด๋ธ”(emp)๊ณผ ๋ถ€์„œ ํ…Œ์ด๋ธ”(dept)์ด ์žˆ์„ ๊ฒฝ์šฐ

    ์‚ฌ์›ํ…Œ์ด๋ธ”์—๋Š” ๋ถ€์„œ๋ช… ๋ฐ์ดํ„ฐ๋Š” ์—†๋‹ค.

    ์กฐํšŒํ•˜๊ณ  ํ•˜๋Š” ๊ฐ’์ด ์‚ฌ์›๋ช…, ๋ถ€์„œ๋ฒˆํ˜ธ, ๋ถ€์„œ๋ช…์ผ ๊ฒฝ์šฐ 

    empํ…Œ์ด๋ธ”์—์„œ๋Š” ename, deptno๋Š” ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ถ€์„œ๋ช…์€ deptํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค.

    ์ด ๊ฒฝ์šฐ join์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์ง€ ์•Š์€ ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

    ๋ถ€์„œ๋ฒˆํ˜ธ๋กœ ์กฐ์ธํ•ด์„œ ๋ถ€์„œ๋ช…์„ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ()์•ˆ์— ๋„ฃ์–ด์„œ ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์ฒ˜๋Ÿผ ์กฐํšŒ

    ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ ์ž‘๋™์›๋ฆฌ

    ๋ฉ”์ธ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ํ•„์š”ํ•œ ๊ฐ’์„ ์ œ๊ณต
    ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋ธ”๋ก์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋”ฉ
    ๋ฉ”์ธ ์ฟผ๋ฆฌ์—์„œ ์ฃผ์–ด์ง„ ์ฃผ๊ฑด์„ ๊ฐ€์ง€๊ณ  ํ•„์š”ํ•œ ๊ฐ’์„ ์ฐพ๊ณ  ์ด ๊ฒฐ๊ณผ๋ฅผ ์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ๊ฐ’์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ query execution cache๋ผ๋Š” ๊ณณ์— ์ €์žฅ ํ•ด ๋‘ (์—ฌ๊ธฐ์„œ ์ž…๋ ฅ๊ฐ’์€ ๋ฉ”์ธ์ฟผ๋ฆฌ์—์„œ ์ฃผ์–ด์ง„ ๊ฐ’์ด๊ณ  ์ถœ๋ ฅ๊ฐ’์€ ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ ํ›„ ๋‚˜์˜จ ๊ฒฐ๊ณผ๊ฐ’์ž„)
    ๋‹ค์Œ ์กฐ๊ฑด์ด ๋ฉ”์ธ ์ฟผ๋ฆฌ์—์„œ ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋กœ ๋“ค์–ด์˜ค๋ฉด ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ๊ฐ’์ด ์บ์‹œ์— ์กด์žฌํ•˜๋Š”์ง€ ์ฐพ๊ณ  ์žˆ์œผ๋ฉด ์ฆ‰์‹œ ๊ฒฐ๊ด๊ฐ’์„ ์ถœ๋ ฅ, ์—†์œผ๋ฉด ๋‹ค์‹œ ๋ธ”๋ก์„ ์—‘์„ธ์Šค ํ•ด์„œ ํ•ด๋‹น ๊ฐ’์„ ์ฐพ์€ ํ›„ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œํ•ด ๋‘ , ์ด ์ž‘์—…์„ ๋ฉ”์ธ ์ฟผ๋ฆฌ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
    โ€ป ์œ„์˜ ์ˆœ์„œ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ ๋น ๋ฅธ ์ด์œ ๋Š” ์ฐพ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž„
    ๋งŒ์•ฝ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๊ฑฐ๋‚˜ ๋˜๋Š” ๋ฐ์ดํ„ฐ์–‘์ด ๋งŽ์„ ๊ฒฝ์šฐ์—๋Š” Join์ด ๋” ๋น ๋ฆ„
    ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ 1๊ฐœ๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ "๋‹จ์ผํ–‰ ํ•˜์œ„ ์งˆ์˜์— 2๊ฐœ ์ด์ƒ์˜ ํ–‰์ด ๋ฆฌํ„ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค." ์—๋Ÿฌ ๋ฐœ์ƒ ํ•จ
    ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ์—์„œ 2๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ์กฐํšŒํ•  ๊ฒฝ์šฐ์—๋„ "ORA-00913 : ๊ฐ’์˜ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค." ์—๋Ÿฌ ๋ฐœ์ƒ ํ•จ

    ์ถœ์ฒ˜ : ์˜ค๋ผํด SQL๊ณผ PL/SQL ์ฑ…


    ์ธ๋ผ์ธ๋ทฐ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์•„๋ž˜ ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋ถ€์„œ๋ณ„ ์ตœ๊ณ ๊ธ‰์—ฌ ๋ฐ›๋Š” ์‚ฌ๋žŒ๊ณผ ์—ฐ๋ด‰์ด ๊ฐ™์€ ์‚ฌ๋žŒ์„ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ์ด๊ณ 

    ๋ถ€์„œ๋ณ„ ์ตœ๊ณ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ๋žŒ์„ ๋ฝ‘์„ ๋•Œ ์ธ๋ผ์ธ๋ทฐ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉ ํ–ˆ๋‹ค.

    ์ธ๋ผ์ธ๋ทฐ ์„œ๋ธŒ์ฟผ๋ฆฌ

     


    ์ผ๋ฐ˜ ์„œ๋ธŒ์ฟผ๋ฆฌ

    'ALLEN'์ด๋ผ๋Š” ์‚ฌ์›์˜ ๊ธ‰์—ฌ๋ณด๋‹ค ๋†’์€ ์‚ฌ๋žŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ์ด๊ณ 

    ์—ฌ๊ธฐ์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” 'ALLEN'์˜ ๊ธ‰์—ฌ๊ฐ€ ์˜ˆ๋ฅผ ๋“ค์–ด 1800์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ

    SELECT * FROM 
    emp 
    WHERE sal > 1800

    ๋งŒ์ผ 'ALLEN'์˜ ๊ธ‰์—ฌ๊ฐ€ 2000์œผ๋กœ ๋ณ€๊ฒฝ ๋  ๊ฒฝ์šฐ ๋‹ค์‹œ ์กฐ๊ฑด์„ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•œ๋‹ค.

    ๊ทธ๋ž˜์„œ 'ALLEN'์˜ ๊ธ‰์—ฌ๋ฅผ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ํ™œ์šฉํ•œ ๊ฒƒ์ด๋‹ค.

    ์ผ๋ฐ˜ ์„œ๋ธŒ์ฟผ๋ฆฌ

     


    ๋‹จ์ผํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ๋‹จ์ผํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ

    -- ๋‹จ์ผํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์ผ ๊ฒฝ์šฐ WHERE์ ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž 
    = : ๊ฐ™๋‹ค.
    <> : ๊ฐ™์ง€ ์•Š๋‹ค.
    > : ํฌ๋‹ค.
    < : ์ž‘๋‹ค.
    <= : ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

    ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ

     


    ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ ํ•จ์ˆ˜

    ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ ํ•จ์ˆ˜

    ANY์™€ ALL์€ ์—ฐ์‚ฐ์ž์˜ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’์ด ๋‹ฌ๋ผ์ง
    ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์€ ์ตœ์†Ÿ๊ฐ’์ด๊ฑฐ๋‚˜ ์ตœ๋Œ“๊ฐ’์ด์ง€๋งŒ ์—ฐ์‚ฐ์ž ์ขŒ์ธก์— ์–ด๋–ค ๊ฐ’์ด ์˜ค๋Š”๊ฐ€์— ๋”ฐ๋ผ์„œ ์ถœ๋ ฅ๋˜๋Š” ๊ฒฐ๊ด๊ฐ’์€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ด

    โ€ป ์„œ๋ธŒ ์ฟผ๋ฆฌ ์ž‘์„ฑ ์‹œ ์ฃผ์˜์‚ฌํ•ญ
    ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ถ€๋ถ„์€ WHERE์ ˆ์˜ ์—ฐ์‚ฐ์ž ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฐ˜๋“œ์‹œ ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด์•ผ ํ•จ
    ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ(Top-n ๋ถ„์„ ๋“ฑ)๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ์ ˆ์— Order by์ ˆ์ด ์˜ฌ ์ˆ˜ ์—†์Œ
    ๋‹จ์ผํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ(์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์œ ํ˜•์ด๊ณ  ์„œ๋ธŒ ์ฟผ๋ฆฌ ์ˆ˜ํ–‰๊ฒฐ๊ณผ๊ฐ€ 1๊ฑด๋งŒ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ)์™€ ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์ž๋ฅผ ์ž˜ ์„ ํƒํ•ด์•ผ ํ•จ

    ์‚ฌ์ง„ ์ถœ์ฒ˜ : https://mjn5027.tistory.com/51


    ๋‹ค์ค‘ ์ปฌ๋Ÿผ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ๋‹ค์ค‘ ์ปฌ๋Ÿผ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์ธ ๊ฒฝ์šฐ๋ฅผ ๋งํ•จ
    ์ฃผ๋กœ pk๋ฅผ ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์œผ๋กœ ํ•ฉ์ณ์„œ ๋งŒ๋“ค์—ˆ์„ ๊ฒฝ์šฐ() ํ•œ๊บผ๋ฒˆ์— ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž์ฃผ ์‚ฌ์šฉ

    ๋‹ค์ค‘ ์ปฌ๋Ÿผ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์œ„๋ฅผ ๋ณด๋ฉด ์„œ๋ธŒ ์ฟผ๋ฆฌ ๋ถ€๋ถ„์—์„œ ํ•™๋…„๋ณ„๋กœ ์ตœ๋Œ€ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ๊ตฌํ•œ ๋‹ค์Œ ํ•œํ–‰ ์”ฉ ๋ฉ”์ธ ์ฟผ๋ฆฌ๋กœ ๋„˜๊ฒจ์ค˜์„œ ๋ฉ”์ธ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ๊ทธ ์กฐ๊ฑด์— ๋งž๋Š” ํ–‰์„ ์ถœ๋ ฅํ•œ ๊ฒƒ์ž„
    ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€ ์„œ๋ธŒ ์ฟผ๋ฆฌ์—์„œ ๋‘ ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ๋™์‹œ์— ๋ฉ”์ธ ์ฟผ๋ฆฌ๋กœ ๋„˜๊ฒจ์„œ ๋น„๊ตํ•œ ๋‹ค๋Š” ๊ฒƒ


     WITH์ ˆ์„ ํ™œ์šฉํ•œ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์˜ค๋ผํด 9i ๋ฒ„์ „๋ถ€ํ„ฐ ์ง€์›๋จ, WITH์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฏธ๋ฆฌ ๋ทฐ์ฒ˜๋Ÿผ ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”๋กœ ์ƒ์„ฑ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋ฒ•
    ์„ฑ๋Šฅ์ด ์ข‹์•„์„œ ํ˜„์—…์—์„œ ์•„์ฃผ ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€๋งŒ ์‚ฌ์šฉ๋ฒ•์ด ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ
    ํ…Œ์ด๋ธ”์„ ์ž„์‹œ๋กœ ๋งŒ๋“œ๋Š” ์ ์€ VIEW์™€ ์“ฐ์ž„์ด ๋น„์Šทํ•˜์ง€๋งŒ VIEW๋Š” DROPํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์—†์–ด์ง€์ง€ ์•Š์ง€๋งŒ WITH์ ˆ์€ ํ•œ๋ฒˆ ์‹คํ–‰ํ•  ์ฟผ๋ฆฌ๋ฌธ์•ˆ์—์„œ๋งŒ ์‹คํ–‰๋จ
    ์˜ค๋ผํด ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜๋ณต ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์คŒ
    WITH์ ˆ ์‚ฌ์šฉ ์‹œ ๋™์ผ ํ…Œ์ด๋ธ” ์ ‘๊ทผ์„ ์ตœ์†Œํ™” ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋œ ์ž„์‹œ ํ…Œ์ด๋ธ”์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ ‘๊ทผํ•˜๊ธฐ์— ๋””์Šคํฌ IO๋ณด๋‹ค ์„ฑ๋Šฅ ๊ฐœ์„ ์˜ ์ด์ ์ด ์žˆ์Œ
    ๊ทธ๋ฆฌ๊ณ  SQL๋„ ๊ฐ€๋…์„ฑ ์žˆ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ
    โ€ป with ์ ˆ ์•ˆ์—๋Š” SELECT ๋ฌธ์žฅ๋งŒ ์“ธ ์ˆ˜ ์žˆ์Œ, WITH ์ ˆ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ WITH ์ ˆ์„ ์“ธ ์ˆ˜ ์—†์Œ

    ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
    - ๋‹จ์ผ ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
    WITH a AS
    (
      SELECT query..
    )
    SELECT * FROM a
    ;
    
    - ๋‹ค์ค‘ ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
    WITH a AS
    (
      SELECT query..
    ),
    b AS
    (
      SELECT query..
    ) 
    SELECT * FROM a
    UNION ALL
    SELECT * FROM b
    ;

    with์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ๋Œ“๊ธ€