3 ๋ถ„ ์†Œ์š”

๐Ÿ“š DB ( DataBase )


๐Ÿ“š JOIN

JOIN ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

JOIN ์ฃผ์˜ํ•  ์ 

  • ์กฐ์ธ์˜ ์ฒ˜๋ฆฌ๋Š” ์–ด๋Š ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ฝ์„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ( ์ฒ˜๋ฆฌํ•  ์ž‘์—…๋Ÿ‰์ด ์ƒ๋‹นํžˆ ๋‹ฌ๋ผ์ง„๋‹ค. )
  • INNER JOIN
    ์–ด๋Š ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ฝ์–ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€์ง€ ์•Š์•„ MYSQL ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์กฐ์ธ์˜ ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•ด์„œ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • OUTER JOIN
    ๋ฐ˜๋“œ์‹œ OUTER๊ฐ€ ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ฝ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์กฐ์ธ ์ˆœ์„œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์—†๋‹ค.
  • ํ…Œ์ด๋ธ”์„ JOIN ํ•˜๋ ค๋ฉด ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ ๊ฐ™์€ ์ปฌ๋Ÿผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋ชจ๋“  ์ปฌ๋Ÿผ์˜ ์ฐธ์กฐ๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

INNER JOIN

select col1, col2 ..
from table1 INNER JOIN table2
ON table1.column = table2.column;

INNER JOIN - ON์„ ์ด์šฉํ•˜์—ฌ JOIN ์กฐ๊ฑด ์ง€์ •

select col1, col2 ..
from table1 INNER JOIN table2
ON table1.column = table2.column
where col1=100;

INNER JOIN - USING์„ ์ด์šฉํ•˜์—ฌ JOIN ์กฐ๊ฑด ์ง€์ •

select col1, col2 ..
from table1 JOIN table2
using (๊ณตํ†ตcolumn) -- ๊ณตํ†ต์ ์ธ ์ปฌ๋Ÿผ๋ช… ( ๋‘ ํ…Œ์ด๋ธ”์˜ )
where col1=100;

NATURAL JOIN

select col1, col2 ..
from table1 NATURAL JOIN table2;

LEFT OUTER JOIN

select col1, col2 ..
from table1 LEFT OUTER JOIN table2
ON or USING;

RIGHT OUTER JOIN

select col1, col2 ..
from table1 RIGHT OUTER JOIN table2
ON or USING;

FULL OUTER JOIN

select col1, col2 ..
from table1 FULL OUTER JOIN table2
ON or USING;

SELF JOIN

  • ๊ฐ™์€ ํ…Œ์ด๋ธ” ๋ผ๋ฆฌ JOIN
  • ๊ฐ™์€ ํ…Œ์ด๋ธ” ์•ˆ์—์„œ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋ชจ๋“  ์ง์›์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ์ง์›๋“ค์˜ ์ƒ๊ด€์„ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
select col1, col2 ..
from table1 a INNER JOIN table1 b
on a.col1 = b.col1;

NONE-EQUI JOIN

EQUI JOIN ์ด๋ž€

NONE-EQUI JOIN ์ด๋ž€

select e.employee_id, e.salary, s.grade
from employees e join salgrades s
where e.salary between s.losal and s.hisal;

--> salgrades ํ…Œ์ด๋ธ”์— losal, hisal ๋ฒ”์œ„ ๊ฐ„์— ๋“ฑ๊ธ‰์ด ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.

DATABASE JOIN ๋งˆ๋ฌด๋ฆฌ

DB์˜ ๊ฝƒ์ธ JOIN์„ ๋ฐฐ์›Œ๋ณด์•˜๋‹ค.
SQL๋ฌธ์„ ์ž‘์„ฑํ•  ๋•Œ ์ˆœ์„œ๋Œ€๋กœ ์ƒ๊ฐํ•˜๋ฉฐ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ตญ์–ด ! ๋ฅผ ์ž˜ํ•ด์•ผํ•œ๋‹ค.. ใ…‹ใ…‹ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋„ ์ž˜ ์•Œ์•„์•ผํ•˜๊ณ .. ๊ทธ๋ž˜์•ผ JOIN๋ฌธ์„ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
DB table์„ ์ง์ ‘ ๊ตฌ์ƒํ•˜๊ณ  ๋งŒ๋“ค๊ณ  JAVA๋ž‘ ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ค๋ค„๋ด์•ผ ๊ทธ ๋•Œ์„œ์•ผ DB๋ฅผ ํ•  ์ค„ ์•ˆ๋‹ค .. ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
๋นจ๋ฆฌ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค !!
JOIN๋ฌธ์€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋‹ˆ๊นŒ ๊ผญ !! ์ž˜ ์•Œ์•„๋‘๊ณ  ๋งŽ์ด SQL๋ฌธ์„ ์ž‘์„ฑํ•ด๋ด์•ผ ํ•œ๋‹ค !!
์„œ๋ธŒ์ฟผ๋ฆฌ ์ค‘์— ๋ฌด์—‡์„ ์จ์•ผ๋˜๋‚˜ ํ•˜๋ฉด MYSQL 5.5๊นŒ์ง€๋Š” ์›ฌ๋งŒํ•˜๋ฉด JOIN์œผ๋กœ ํ•˜๋ผ๊ณ  ํ•˜์˜€์ง€๋งŒ 5.6๋ถ€ํ„ฐ SUBQUERY๊ฐ€ ๋Œ€ํญ ์ตœ์ ํ™” ๋˜๋ฉด์„œ ์ƒ๊ด€์ด ํฌ๊ฒŒ ์—†์–ด์กŒ๋‹ค. ๋น„๊ตํ•œ ๊ฒƒ์„ ๋ˆˆ์œผ๋กœ ๋ณด๊ณ  ์‹ถ์œผ๋ฉด https://jojoldu.tistory.com/520 ์ด ๋ธ”๋กœ๊ทธ๋ฅผ ํ•œ ๋ฒˆ ์ฐธ๊ณ ํ•ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์•„์ฃผ ์นœ์ ˆํ•˜๊ฒŒ ๋‹ค ๋น„๊ตํ•ด๋†“์•˜๋‹ค.





๐Ÿ‘ ์ฐธ์กฐ
https://yongku.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4DB-JOININNER-JOIN-LEFT-JOIN-RIGHT-JOIN-OUTER-JOIN-%EC%A0%95%EB%A6%AC
https://devfunny.tistory.com/316