Post

๐Ÿ“Ÿ SQL & Database (05) - JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN)



ํ•™์Šตํ™˜๊ฒฝ : Windows, MariaDB, DBeaver

  • ์˜ˆ์‹œ ํ…Œ์ด๋ธ”

[์ฃผ๋ฌธํ…Œ์ด๋ธ”]

id์ฃผ๋ฌธ๋ฒˆํ˜ธ๊ณ ๊ฐ๋ช…์ƒํ’ˆ
11ํ™๊ธธ๋™์ปดํ“จํ„ฐ
21ํ™๊ธธ๋™๋งˆ์šฐ์Šค
32๊น€์ฒ ์ˆ˜ํ‚ค๋ณด๋“œ
43์ด์˜ํฌํ‚ค๋ณด๋“œ

[์ƒํ’ˆํ…Œ์ด๋ธ”]

id์ƒํ’ˆ๊ฐ€๊ฒฉ์นดํ…Œ๊ณ ๋ฆฌ
1์ปดํ“จํ„ฐ1,500,000์ „์ž์ œํ’ˆ
2๋งˆ์šฐ์Šค50,000์ฃผ๋ณ€๊ธฐ๊ธฐ
3ํ‚ค๋ณด๋“œ100,000์ฃผ๋ณ€๊ธฐ๊ธฐ


๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์ปฌ๋Ÿผ๋„ ๊ฐ™์ด ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

image

์ด๋Ÿฐ์‹์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ where ์ ˆ์„ ์‚ฌ์šฉํ•ด์„œ ์ž‘์„ฑํ•ด๋„ ๋˜์ง€๋งŒ JOIN์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข€ ๋” ์ง๊ด€์ ์ธ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ๋‹ค

INNER JOIN

๋ฐฉ๊ธˆ ์˜ˆ์‹œ๋กœ ๋“ค์—ˆ๋˜ ๋‚ด์šฉ์„ INNER JOIN์„ ์‚ฌ์šฉํ•ด์„œ ๋˜‘๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค
JOIN๋ฌธ๋ฒ•์€ ON๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š”๋ฐ
ON์€ SELECT FROM WHERE ์ ˆ์—์„œ์˜ WHERE์ฒ˜๋Ÿผ ์กฐ๊ฑด์„ ๋„ฃ๋Š” ๋ถ€๋ถ„์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ

  • ์‚ฌ์šฉ๋ฐฉ๋ฒ•

    SELECTย ย  ์ถœ๋ ฅํ•  ์ปฌ๋Ÿผ๋“ค
    FROMย ย  ํ…Œ์ด๋ธ”1ย ย  INNER JOINย ย  ํ…Œ์ด๋ธ”2 ย ย 
    ONย ย  ์กฐ๊ฑด๋ฌธ


    ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ

image

์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์•„๊นŒ SELECT FROM WHERE๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹น

image

๋งŒ์•ฝ 3๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ํ•ฉ์น˜๊ณ  ์‹ถ๋‹ค๋ฉด?

SELECTย ย  ์ถœ๋ ฅํ•  ์ปฌ๋Ÿผ๋“ค
FROMย ย  ํ…Œ์ด๋ธ”1ย ย 
INNER JOINย ย  ํ…Œ์ด๋ธ”2 ย ย  ONย ย  ์กฐ๊ฑด1
INNER JOINย ย  ํ…Œ์ด๋ธ”3 ย ย  ONย ย  ์กฐ๊ฑด2

๊ทธ๋ƒฅ ํ•œ์ค„ ๋” ์ถ”๊ฐ€ํ•ด์„œ ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค

LEFT JOIN

์ƒํ’ˆ์•„์ด๋””์™€ ๋งž์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•œ ์˜ˆ์‹œ ํ…Œ์ด๋ธ”์ด๋‹ค

[์ฃผ๋ฌธํ…Œ์ด๋ธ”]

id์ฃผ๋ฌธ๋ฒˆํ˜ธ๊ณ ๊ฐ๋ช…์ƒํ’ˆid
1100ํ™๊ธธ๋™1
2101ํ™๊ธธ๋™2
3102๊น€์ฒ ์ˆ˜3
4103์ด์˜ํฌ3
5104๊ฐ•ํ˜ธ๋™555

[์ƒํ’ˆํ…Œ์ด๋ธ”]

id์ƒํ’ˆ๊ฐ€๊ฒฉ์นดํ…Œ๊ณ ๋ฆฌ
1์ปดํ“จํ„ฐ1500000์ „์ž์ œํ’ˆ
2๋งˆ์šฐ์Šค50000์ฃผ๋ณ€๊ธฐ๊ธฐ
3ํ‚ค๋ณด๋“œ100000์ฃผ๋ณ€๊ธฐ๊ธฐ
400์นจ๋Œ€1000000๊ฐ€๊ตฌ


์ƒํ’ˆํ…Œ์ด๋ธ”์˜ ์•„์ด๋””์™€ ์ฃผ๋ฌธํ…Œ์ด๋ธ”์˜ ์ƒํ’ˆid์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ํ…Œ์ด๋ธ”์„ ํ•ฉ์น˜๋ ค๋ฉด?
image
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋˜๊ฒ ์ง€์š”

๊ทธ๋Ÿผ ๊ฒฐ๊ณผ๋Š”

image

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๊ณตํ†ต์ ์ด ์—†๋Š” ํ–‰๋“ค๊นŒ์ง€ ์ถœ๋ ฅํ•˜๊ณ ์‹ถ๋‹ค๋ฉด?
LEFT JOIN์ด๋‚˜ RIGHT JOIN์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค.

์œ„์— ์žˆ๋Š” ์ฟผ๋ฆฌ๋ฌธ์—์„œ INNER ๋Œ€์‹  LEFT๋กœ ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•ด๋ณด๋ฉด?
image
image

๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด LEFT JOIN์€
INNER JOIN์„ ํ•ด์„œ ํ…Œ์ด๋ธ”์„ ํ•ฉ์น˜๊ธด ํ• ๊ฑด๋ฐ,
JOIN๋ฌธ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์˜ ํ–‰๋“ค์€ ๋ชจ๋‘ ์ถœ๋ ฅํ•ด๋ผ. ์ด๊ฑฐ์ž„

RIGHT JOIN

๊ทธ๋Ÿผ RIGHT JOIN์€ ๋ญ๊ฒ ๋Š”๊ฐ€
JOIN๋ฌธ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์˜ ํ–‰๋“ค์€ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” ๊ฑฐ๊ฒ ์ง€.
image
image

๋Œ€๋ฐ•~

๊ทธ ๋Ÿฐ ๋ฐ
์ด๊ฑธ ์–ด๋””์— ์“ฐ๋ƒ?
ํ…Œ์ด๋ธ”์„ ํ•ฉ์น  ๋•Œ NULL์ด ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์„ ๋ฏธ๋ฆฌ ์ฐพ๊ณ ์ž ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•จ
image

์ด๋ ‡๊ฒŒ~

This post is licensed under CC BY 4.0 by the author.