๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Computer Science/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] left outer join๊ณผ join(=inner join) ์ฐจ์ด, JOIN์„ ํ•˜๋Š” ์ด์œ 

by Jay Din 2023. 11. 9.
728x90
๋ฐ˜์‘ํ˜•

๋‚ด๋ถ€์กฐ์ธ (join = inner join )์ด๋ž€?

join์ด๋ž€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

inner join( ๋˜๋Š” join )์€ ๋‚ด๋ถ€์กฐ์ธ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ์กฐ์ธํ•œ ํ…Œ์ด๋ธ” ๋ชจ๋‘ ์žˆ๋Š” ๋‚ด์šฉ๋งŒ join๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

๋‘ ํ…Œ์ด๋ธ”์„ joinํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ํ…Œ์ด๋ธ”์ด 1:N ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1:N ๊ด€๊ณ„๋Š” ์ฃผ๋กœ primary key์™€ foreign key ๊ด€๊ณ„๋กœ ๋งบ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

(์ƒํ˜ธ์กฐ์ธ์˜ ๊ฒฝ์šฐ์—๋Š” PK-FK ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ์—ฌ๋„ ๋ฉ๋‹ˆ๋‹ค.)

SQL JOIN ์˜ˆ์‹œ

ํ…Œ์ด๋ธ”

  • video table
id title y_id
1 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์™„์ „์ •๋ณต 2
2 ๋ณผ๋ฆฌ๋น„์•„ ๊ด‘์‚ฐ ํƒ๋ฐฉ๊ธฐ 4
3 ์นจvsํŽ„ ํ† ๋ก  3
4 ์šด์˜์ฒด์ œ ์™„์ „ ์ •๋ณต 2
5 ์ถฉ๊ฒฉ์‹คํ™” ๋Œ€ํ•œ๋ฏผ๊ตญ์ด ํ•ด๋ƒˆ๋‹ค Null

 

  • youtuber table
id name ์ฑ„๋„ ์„ค๋ช…
1 ์ฏ”์–‘ ๋จน๋ฐฉ
2 ๊ฐœ๋ฐœ๋‚จ๋…ธ์”จ ๊ฐœ๋ฐœ
3 ์นจ์ฐฉ๋งจ ์˜ˆ๋Šฅ
4 ๋น ๋‹ˆ๋ณดํ‹€ ์—ฌํ–‰

 

inner join์˜ sql query ์˜ˆ์‹œ

select * from vedio inner join youtuber on vedio.y_id = youtuber.id;

๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”

๋‘ table์— ๊ณตํ†ต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ํ–‰์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

video ํ…Œ์ด๋ธ”์˜ id=5๋Š” youtuber table์— ์—†์–ด Join์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— row๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

id title y_id name ์ฑ„๋„ ์„ค๋ช…
1 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์™„์ „์ •๋ณต 2 ๊ฐœ๋ฐœ๋‚จ๋…ธ์”จ ๊ฐœ๋ฐœ
2 ๋ณผ๋ฆฌ๋น„์•„ ๊ด‘์‚ฐ ํƒ๋ฐฉ๊ธฐ 4 ๋น ๋‹ˆ๋ณดํ‹€ ์—ฌํ–‰
3 ์นจvsํŽ„ ํ† ๋ก  3 ์นจ์ฐฉ๋งจ ์˜ˆ๋Šฅ
4 ์šด์˜์ฒด์ œ ์™„์ „ ์ •๋ณต 2 ๊ฐœ๋ฐœ๋‚จ๋…ธ์”จ ๊ฐœ๋ฐœ

 

728x90

 

left outer join(์™ธ๋ถ€์กฐ์ธ) ์˜ˆ์‹œ

select * from vedio left join youtuber on vedio.y_id = youtuber.id;

๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”

์™ผ์ชฝ video table์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๋•Œ๋ฌธ์— youtuber table์—๋Š” ์—†๋Š” id=5์˜ name๊ณผ ์ฑ„๋„ ์„ค๋ช…์ด null๊ฐ’์œผ๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

id title y_id name ์ฑ„๋„ ์„ค๋ช…
1 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์™„์ „์ •๋ณต 2 ๊ฐœ๋ฐœ๋‚จ๋…ธ์”จ ๊ฐœ๋ฐœ
2 ๋ณผ๋ฆฌ๋น„์•„ ๊ด‘์‚ฐ ํƒ๋ฐฉ๊ธฐ 4 ๋น ๋‹ˆ๋ณดํ‹€ ์—ฌํ–‰
3 ์นจvsํŽ„ ํ† ๋ก  3 ์นจ์ฐฉ๋งจ ์˜ˆ๋Šฅ
4 ์šด์˜์ฒด์ œ ์™„์ „ ์ •๋ณต 2 ๊ฐœ๋ฐœ๋‚จ๋…ธ์”จ ๊ฐœ๋ฐœ
5 ์ถฉ๊ฒฉ์‹คํ™” ๋Œ€ํ•œ๋ฏผ๊ตญ์ด ํ•ด๋ƒˆ๋‹ค Null Null Null

 

JOIN์„ ํ•˜๋Š” ์ด์œ 

JOIN์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ” ๊ฐ„์— ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค.

์ด ์—ฐ์‚ฐ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์งค ๋•Œ๋Š” ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ๊ฐ„์— ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•˜๊ณ , ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด JOIN์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ์—์„œ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ ์ •๊ทœํ™”(Normalization)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ„๋Š” ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์ด ๊ฐ์†Œํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๊ด€์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐํ•ฉํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํšจ์œจ์ ์ธ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ

๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ๋‚˜๋ˆ„๋ฉด ๊ฐ ํ…Œ์ด๋ธ”์€ ํŠน์ • ์ฃผ์ œ๋‚˜ ์—…๋ฌด์— ์ง‘์ค‘๋ฉ๋‹ˆ๋‹ค.

์ด๋กœ์จ ๊ฐ ํ…Œ์ด๋ธ”์€ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ผ์น˜์„ฑ ๋ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

JOIN์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ผ์น˜์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋‚˜๋ˆ„์–ด ์ €์žฅํ•˜๊ณ , JOIN์„ ํ†ตํ•ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ์—ฐ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ

JOIN์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ด€๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์‹œ์Šคํ…œ์ด ๋” ํฐ ๊ทœ๋ชจ๋กœ ํ™•์žฅ๋  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ตœ์ ํ™”

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์€ JOIN ์—ฐ์‚ฐ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค, ์ฟผ๋ฆฌ ์ตœ์ ํ™” ๋ฐ ์ ์ ˆํ•œ JOIN ์œ ํ˜• ์„ ํƒ ๋“ฑ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ๋ฐ ์กฐ์ž‘์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 


์ฐธ๊ณ 

https://www.nossi.dev/cs/db

728x90
๋ฐ˜์‘ํ˜•