ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MSSQL JOIN ์ •๋ฆฌ : INNER JOIN, OUTER JOIN, CROSS JOIN
    DB 2020. 2. 10. 23:47
    ๋ฐ˜์‘ํ˜•

     

    ์ผ๋ฐ˜์ ์œผ๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ํ‚ค(Key)์™€ ๊ฐ’(Value)๋“ค์˜ ๊ด€๊ณ„๋ฅผ ํ…Œ์ด๋ธ”ํ™” ์‹œํ‚จ ๊ฐ„๋‹จํ•œ ์›์น™์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งํ•œ๋‹ค.

    ์ด๋•Œ A ํ…Œ์ด๋ธ”๊ณผ B ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์ •๋ณด๋“ค์„ ํ•จ๊ป˜ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ ? 

    ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์ด์–ด์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

    ์ด ๋•Œ ํ•„์š”ํ•œ๊ฒƒ์ด JOIN์ด๋‹ค. 

     


     

    ์กฐ์ธ(JOIN) ? 

    ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ๊ณฑํ•œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ ์ด๋ผ๊ณ  ๊ฐ„๋‹จํžˆ MSDN์— ์ •์˜๋˜์–ด์žˆ๋‹ค.

     

    JOIN์—๋Š” INNER JOIN๊ณผ OUTER JOIN ๊ทธ๋ฆฌ๊ณ  CROSS JOIN ์ด๋ ‡๊ฒŒ ์„ธ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉฐ, ์‹ค๋ฌด์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ INNER JOIN๊ณผ  LEFT OUTER JOIN์„ ์‚ฌ์šฉํ•œ๋‹ค.

     

    ๊ทธ๋ฆผ์„ ๋ณด๋ฉฐ ํ•˜๋‚˜์”ฉ ์•Œ์•„๊ฐ€ ๋ณด์ž.

     

     

     

    1. INNER JOIN

     

    ๊ต์ง‘ํ•ฉ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด ์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•ด์ฃผ๋ฉด ์‰ฝ๋‹ค.
    ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋‘ ํ…Œ์ด๋ธ”์˜ ์กฐ๊ฑด์— ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ถœ๋ ฅํ•ด ์ค€๋‹ค.

     

    JOIN์œ ํ˜• ์ƒ๋žต์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ INNER JOIN์œผ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉฐ,

    INNER JOIN์‹œ LEFT,RIGHT๊ฐ™์€ ๊ธฐ์ค€์„ ์ •ํ•ด์ฃผ์ง€ ์•Š๋Š”๋ฐ, INNER JOIN์€ ๋‘ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ค€์ด ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

     

     

    2. OUTER JOIN

    1) LEFT OUTER JOIN


    OUTER JOIN์ด INNER JOIN๊ณผ ๋‹ค๋ฅธ์ ์€ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋„ ํ‘œ์‹œํ•ด ์ค€๋‹ค๋Š” ์ ์ด๋‹ค.

     

    LEFT JOIN ์ˆ˜ํ–‰์‹œ ๋จผ์ € ํ‘œ๊ธฐ๋œ ์ขŒ์ธก ํ…Œ์ด๋ธ”์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ฝ์€ ํ›„ ๋‚˜์ค‘์— ํ‘œ๊ธฐ๋œ ์šฐ์ธก ํ…Œ์ด๋ธ”์—์„œ JOIN๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค. 

    ์ฆ‰ Aํ…Œ์ด๋ธ”๊ณผ Bํ…Œ์ด๋ธ”์ด ์žˆ์„ ๋•Œ A๊ฐ€ ๊ธฐ์ค€์ด ๋˜์–ด, A์™€ B๋ฅผ ๋น„๊ตํ•œ๋‹ค์Œ B์˜ JOIN ์ปฌ๋Ÿผ์—์„œ ๊ฐ™์€ ๊ฐ’์ด ์žˆ์„ ๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  B์˜ JOIN์ปฌ๋Ÿผ์—์„œ ๊ฐ™์€ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” Bํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ์ปฌ๋Ÿผ๋“ค์€ NULL ๊ฐ’์œผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ์ด๋‹ค.

     

    ์ฐธ๊ณ ๋กœ OUTER JOIN์€ ๊ธฐ๋ณธ์ ์œผ๋กœ LEFT OUTER JOIN์œผ๋กœ ๋ช…์‹œ๋˜๋ฉฐ, OUTER ํ‚ค์›Œ๋“œ๋Š” ์ƒ๋žต๊ฐ€๋Šฅํ•˜๋‹ค.

     

    2) RIGHT OUTER JOIN

     

    RIGHT JOIN์€ LEFT JOIN๊ณผ๋Š” ๋ฐ˜๋Œ€๋กœ ์šฐ์ธก ํ…Œ์ด๋ธ”์ด ๊ธฐ์ค€์ด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

     

    3) FULL OUTER JOIN

     

    JOIN ์ˆ˜ํ–‰์‹œ ์ขŒ์ธก๊ณผ ์šฐ์ธก์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  JOIN ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ๋ชจ๋‘๊ฐ€ ๊ธฐ์ค€์ด ๋œ๋‹ค.

    ํ•ฉ์ง‘ํ•ฉ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.

     

    ๋‹จ UNION ALL์ด ์•„๋‹Œ UNION ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์œผ๋ฏ€๋กœ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œ๋œ๋‹ค.

     

     

    3. CROSS JOIN

     

     

    CROSS JOIN์€ ์ƒํ˜ธ ์กฐ์ธ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ํ•œ ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰๋“ค๊ณผ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์กฐ์ธ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

    ๊ทธ๋ž˜์„œ CROSS JOIN์˜ ๊ฒฐ๊ณผ ๊ฐœ์ˆ˜๋Š” ๋‘ ํ…Œ์ด๋ธ”์˜ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค.

     

    CROSS๋ฌธ์€ ๋ชจ๋“  ํ–‰์— ๋Œ€ํ•œ ๊ฒฐํ•ฉ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ON๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

    ์˜ˆ์ „์—๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์นดํ”ผ ํ›„ ์—ฐ์‚ฐ์ด๋‚˜ ๋ถ€๋ถ„ํ•ฉ์„ ๊ตฌํ•  ๋•Œ ์“ฐ์˜€์ง€๋งŒ, ์ง€๊ธˆ์€ CUBE๋‚˜ GROUPPING์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ๊ณ  ํ˜„์žฌ๋Š” ์ž˜ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

     


    ๋‹ค์Œ์—๋Š” JOIN๋ฌธ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. 

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.