๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/ORACLE

(58)[oracle]23์ผ์ฐจ: ((PL/SQL)) โ˜…[ํ›„๊ธฐ]์˜ค๋ผํด ์„ธ๋ฏธ ํ”„๋กœ์ ํŠธโ˜…

by ์ข…์ด๋นจ๋Œ€ 2023. 11. 19.
TOP

๋ชฉ์ฐจ

    1. 23.11.16(๋ชฉ)

     

    โ–ถ ์ œ๋ชฉ: ใ€Ž์„ฑ์  ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œใ€์„ ๋งŒ๋“ค๊ธฐ์œ„ํ•œ DB ์„ค๊ณ„ (ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ „์˜ DB ๋‹จ๊ณ„๊นŒ์ง€)


    1. ๊ณผ์ œ

    1.1. ์†Œ๊ฐœ

    - ๊ธฐ๊ฐ„: 2023.11.08 ~ 2023.11.17
    - ์กฐ๊ฑด: 
        -- ๋‹จ๊ณ„1) ํ˜„ ์ƒํ™ฉ์—์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์—†๋Š” ์š”๊ตฌ์‚ฌํ•ญ 3๊ฐ€์ง€ ์ฐพ๊ธฐ
        -- ๋‹จ๊ณ„2) ๋ถ„์„์‚ฌํ•ญ์„ ํ† ๋Œ€๋กœ ์„ค์ •ํ•œ ํŒ€ ์ •์ฑ… ๊ธฐ๋ฐ˜ ERD ๊ทธ๋ฆฌ๊ธฐ
        -- ๋‹จ๊ณ„3) ERD ๋‹ค์ด์–ด๊ทธ๋žจ ๋ฐ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” SQL๋ฌธ, PL/SQL๋ฌธ ์ž‘์„ฑ

    1.2. ํŒ€์›

    - ํŒ€์žฅ: ใ…Šใ„ทใ……
    - ํŒ€์›: ใ„ฑใ„ฑใ…Œ, ใ„ฑใ……ใ…Ž, ใ…‚ใ„ฑใ…‡, ใ…‚ใ…‚ใ„ฑ, ใ…‡ใ……ใ„ฑ


    2. ๋‚˜์˜ ํฌ์ง€์…˜: 

        - ํšŒ์˜๋ก ์ž‘์„ฑ
        - SQL ํ…Œ์ด๋ธ”: ํ•™์ƒ ํ…Œ์ด๋ธ” ์ƒ์„ฑ(STUDENTS)
        - SQL ๋ทฐ: ๊ต์ˆ˜์ž ์ •๋ณด(VIEW_PROF_INFO)
        - SQL ํ”„๋กœ์‹œ์ €: ๊ฐœ์„ค ๊ณผ์ •, ๊ฐœ์„ค ๊ณผ๋ชฉ ์—…๋ฐ์ดํŠธ ํ”„๋กœ์‹œ์ € ์ƒ์„ฑ
                       (์กฐ๊ฑด: ์—ฐ๊ฒฐ๋œ ๊ณผ์ •๊ธฐ๊ฐ„, ๊ณผ๋ชฉ๊ธฐ๊ฐ„๊ณผ ์ƒ์ถฉ๋˜์ง€ ์•Š๋„๋ก)
        - SQL ํŠธ๋ฆฌ๊ฑฐ: ์ „๋ฐ˜์ ์ธ ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ
                      & ๊ต์ˆ˜ ์ฝ”๋“œ ์‚ญ์ œ ์‹œ ๊ต์ˆ˜ ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”๋„ ์‚ญ์ œ๋˜๋Š” ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ
                      (์กฐ๊ฑด: ๊ฐ•์˜์ค‘์ธ ๊ต์ˆ˜๋Š” ์‚ญ์ œ๋ถˆ๊ฐ€)
        - SQL ์‹œํ€€์Šค, ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์–‘์‹ ์ž‘์„ฑ



    3. ๋งž์ดํ•œ ๋ฌธ์ œ์  & ํ•ด๊ฒฐ๋ฐฉ์•ˆ

    3.1. ๋ฌธ์ œ1) ๋ฌด๊ฒฐ์„ฑ์ด ์œ„๋ฐ˜๋˜์ง€ ์•Š๋Š” ERD ์ž‘์„ฑ

    3.1.1. ์ƒ์„ธ๋‚ด์šฉ

        ์š”๊ตฌ์ƒ์— ๋งž์ถฐ ํ…Œ์ด๋ธ”์„ ๊ทธ๋ฆฌ๋ฉด ํ…Œ์ด๋ธ”์— ์ค‘๋ณต๋œ ์ปฌ๋Ÿผ์ด ์กด์žฌํ•˜๊ณ  ๊ด€๊ณ„๊ฐ€ M:M ๊ด€๊ณ„๊ฐ€ ๋œ๋‹ค.

    3.1.2. ํ•ด๊ฒฐ๋ฐฉ์•ˆ

        ๋ชจ๋“  ํ…Œ์ด๋ธ”์„ ๊ทธ๋ฆฐํ›„ ์ค‘๋ณต๋˜๋Š” ์ปฌ๋Ÿผ์„ ํŒŒ์•…ํ•˜๊ณ  ์ค‘๋ณต ์ปฌ๋Ÿผ์ด PK์™€ FK๋กœ ๋ถ€์—ฌ๋˜์–ด์•ผํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•œ๋‹ค.
        ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ด๋ธ”์— ์†ํ•˜๋Š” ์ปฌ๋Ÿผ๊ณผ ํ…Œ์ด๋ธ”๊ณผ ํ…Œ์ด๋ธ” ์‚ฌ์ด์— ๋งŒ๋“ค์–ด์ง€๋Š” ์†์„ฑ์„ ์ค‘๊ฐ„ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ ๋‹ค.

        ์˜ˆ๋ฅผ ๋“ค์–ด '๊ณผ์ •์‹œ์ž‘์ผ' ๋ฐ '๊ณผ์ •์ข…๋ฃŒ์ผ'์€ [๊ต์ˆ˜ ํ…Œ์ด๋ธ”]๊ณผ [๊ณผ์ • ํ…Œ์ด๋ธ”] ์–ด๋А ๊ณณ์—๋„ ์†ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 
        [๊ณผ์ •๊ฐœ์„ค ํ…Œ์ด๋ธ”]์„ ๋งŒ๋“ค์–ด์•ผ ๋ฌด๊ฒฐ์„ฑ์„ ํ•ด์น˜์ง€ ์•Š๋Š” 1:N์˜ ๊ด€๊ณ„ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. 

    3.2. ๋ฌธ์ œ2) ์ถœ๋ ฅ์ •๋ณด๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ์ง€

    3.2.1. ์ƒ์„ธ๋‚ด์šฉ

        ๊ต์ˆ˜์ž ๋ช…, ๋ฐฐ์ •๋œ ๊ณผ๋ชฉ๋ช…, ๊ณผ๋ชฉ ๊ธฐ๊ฐ„(์‹œ์ž‘ ์—ฐ์›”์ผ, ๋ ์—ฐ์›”์ผ), ๊ต์žฌ ๋ช…, ๊ฐ•์˜์‹ค, ๊ฐ•์˜ ์ง„ํ–‰ ์—ฌ๋ถ€(๊ฐ•์˜ ์˜ˆ์ •, ๊ฐ•์˜ ์ค‘, ๊ฐ•์˜ ์ข…๋ฃŒ)๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ์ง€. 

    3.2.2. ํ•ด๊ฒฐ๋ฐฉ์•ˆ

       [๊ต์ˆ˜์ž ํ…Œ์ด๋ธ”]์˜ '๊ต์ˆ˜์ž๋ช…'๊ณผ [๊ณผ๋ชฉ ํ…Œ์ด๋ธ”]์˜ '๊ณผ๋ชฉ๊ธฐ๊ฐ„'์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•ด์•ผ ํ•˜๊ณ , ๋‘ ํ…Œ์ด๋ธ” ์‚ฌ์ด์— JOIN์„ ์œ„ํ•œ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ ์ปฌ๋Ÿผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ํ…Œ์ด๋ธ” ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” [๊ณผ์ •๊ฐœ์„ค ํ…Œ์ด๋ธ”]์„ ์ค‘๊ฐ„์— JOINํ•จ์œผ๋กœ์จ ๊ฒฐํ•ฉ๋œ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“  ๋’ค ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ๋‚ด์šฉ๋งŒ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด ์ถœ๋ ฅํ•œ๋‹ค.

        '๊ฐ•์˜ ์ง„ํ–‰ ์—ฌ๋ถ€'์˜ ๊ฒฝ์šฐ ๊ฐ•์˜ ๋‚ ์งœ๋ฅผ ๊ณ„์‚ฐํ•ด ์ปฌ๋Ÿผ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ•์˜ ์‹œ์ž‘์ผ๊ณผ ์ข…๋ฃŒ์ผ์— ๋”ฐ๋ผ ํŒŒ์ƒ๋˜๋Š” ์†์„ฑ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ์กฐํšŒํ•˜๋Š” ์‹œ์ (SYSDATE)์— ๋”ฐ๋ผ ๋ทฐ๋ฅผ ํ†ตํ•ด ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•œ๋‹ค. 
            

    3.3. ๋ฌธ์ œ3) ํ”„๋กœ์‹œ์ €์—์„œ ์กฐํšŒ์กฐ๊ฑด์ด ์—†๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ

    3.3.1. ์ƒ์„ธ๋‚ด์šฉ

        ๊ฐœ์„ค ๊ณผ์ • ํ”„๋กœ์‹œ์ €์—์„œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์‹œ ๋น„๊ต ๋Œ€์ƒ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ NULL ์ด๋ฏ€๋กœ ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜์—ฌ 'no data'์—๋Ÿฌ ๋ฐœ์ƒ๋œ๋‹ค.

    3.3.2. ํ•ด๊ฒฐ๋ฐฉ์•ˆ

        ์กฐํšŒ์กฐ๊ฑด์ด ์—†๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๊ฒฝ์šฐ๊ฐ€ 0์œผ๋กœ ๋‚˜์˜ค๋„๋ก ๊ทธ๋ฃนํ•ฉ์ˆ˜(COUNT, MIN, MAX)๋ฅผ ์ด์šฉํ•ด ์กฐํšŒ์กฐ๊ฑด์ด ์—†์„ ๋•Œ๋ฅผ ๋ถ„๊ธฐ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ˆ˜์ •ํ•˜์—ฌ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

        ์˜ˆ๋ฅผ ๋“ค์–ด ๊ต์ˆ˜์ฝ”๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ COUNT(*)๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. (๊ต์ˆ˜์ฝ”๋“œ์—†์œผ๋ฉด 0 ์ถœ๋ ฅ)

        SELECT COUNT(*) INTO PRF_JUNG_CHECK
        FROM CR_DETAIL
        WHERE PRF_NO = V_PRF_NO;

     

     


    4. ์ตœ์ข… ํ›„๊ธฐ

    ๋”๋ณด๊ธฐ

         ์š”๊ตฌ์ˆ˜ํ•ญ์„ ๋ถ„์„ํ•˜์—ฌ ๊ทธ ๊ด€๊ณ„๋ฅผ ๊ทธ๋ฆฐ 'ERD(Entity Relationship Diagram)'์˜ ๊ฐœ๋…๊ณผ ํŠน์„ฑ์€ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์‹ค์ œ ํ”„๋กœ์ ํŠธ(์„ฑ์  ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๊ตฌํ˜„)์˜ ์š”๊ตฌ ๋ถ„์„์„œ๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ์–ด๋ ค์› ๋‹ค. ํŠนํžˆ, ์š”๊ตฌ์‚ฌํ•ญ์— ๊ธฐ์žฌ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”๊ณผ ํ…Œ์ด๋ธ” ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ํŒŒ์ƒ๋˜์–ด ๋งŒ๋“ค์–ด์ง€๋Š” ํ…Œ์ด๋ธ”(๊ฐœ์„ค๊ณผ์ •ํ…Œ์ด๋ธ”)์„ ๋งŒ๋“ ๋‹ค๋Š” ์ƒ๊ฐ ์ž์ฒด๊ฐ€ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ํŒ€์›๋“ค๊ณผ ๋Š์ž„์—†์ด ์ด ์ปฌ๋Ÿผ์ด ์ฃผ์‹๋ณ„์ž์— ์†ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ๋“ค์–ด ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉํ–ฅ์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

         SQL๊ณผ PL/SQL ์ž‘์„ฑ์— ์žˆ์–ด์„œ๋Š” ์ €๋ฒˆ ํ”„๋กœ์ ํŠธ ์˜€๋˜ 'HR ์ƒ˜ํ”Œ์Šคํ‚ค๋งˆ ERD ๋ฅผ ์ด์šฉํ•œ ํ…Œ์ด๋ธ” ์žฌ๊ตฌ์„ฑ' ๋•๋ถ„์— ํ…Œ์ด๋ธ” ์ƒ์„ฑ๊ณผ ๊ด€๊ณ„์„ค์ •์ด ์–ด๋ ต์ง€ ์•Š์•˜์ง€๋งŒ, ์ œ์•ฝ์‚ฌํ•ญ์„ ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋‚ผ ๊ฒƒ์ธ์ง€ ๋งŽ์€ ๊ณ ๋ฏผ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ํŒ€์›๋“ค๊ณผ '์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฌธ์„ PL/SQL๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”์ง€'์— ๋Œ€ํ•ด ํšŒ์˜ ํ–ˆ๋Š”๋ฐ ๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” SQL๊ณผ PL/SQL ์€ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด์ด์ง€๋งŒ ๊ฐ๊ฐ์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒฐ๋ก ์ด ๋„์ถœ๋˜์—ˆ๋‹ค.  ์˜ˆ๋ฅผ ๋“ค์–ด SQL์€ ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰, ์ถ”๊ฐ€, ๊ฐฑ์‹  ๋“ฑ์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์ž‘์—…์„ PL/SQL์€ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๋กœ์ง์ด๋‚˜ ํŠน์ • ์ž‘์—…์„ ์œ„ํ•œ ํ”„๋กœ์‹œ์ €, ํ•จ์ˆ˜ ์‚ฌ์šฉ๋“ฑ ๋ณต์žกํ•œ ๋กœ์ง ์ž‘์—…์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌ์ฒดํ™” ํ•˜์˜€๋‹ค.

         ๋งค๋ฒˆ ๋А๋ผ๋Š” ๊ฒƒ์ด์ง€๋งŒ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋‚˜์˜ ๋ถ€์กฑํ•œ ์ ์„ ํŒ€์›๊ณผ์˜ ์†Œํ†ต์„ ํ†ตํ•ด ๋ฐฐ์šฐ๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ณ ๋ฏผ์‚ฌํ•ญ์„ ๊ฐ™์ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์–ด๋ ค์šด์ ์„ ์ด์•ผ๊ธฐํ–ˆ์„ ๋•Œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์นœ์ ˆํ•˜๊ฒŒ ์‚ฌ๋ก€๋ฅผ ๋“ค์–ด์ค€ ๋ชจ๋‘์—๊ฒŒ ๊ฐ์‚ฌํ•˜๋‹ค. ํŒ€ ํ”„๋กœ์ ํŠธ๋Š” ํž˜๋“ค์ง€๋งŒ(๊ฐœ๋ณ„ํ”„๋กœ์ ํŠธ๋ณด๋‹ค ๋‚œ์ด๋„๊ฐ€ ๋†’๊ธฐ๋‹ค๋Š” ์ ๋„ ์žˆ์ง€๋งŒ) ์ •๋ง ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.