JOIN
JOIN
๋๊ฐ ์ด์์ ํ ์ด๋ธ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
๊ฒ์ํ๊ณ ์ถ์ ์ปฌ๋ผ์ด ๋ค๋ฅธ ํ ์ด๋ธ์ ์์ ๊ฒฝ์ฐ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
์ฌ๋ฌ ํ ์ด๋ธ์ ๋ง์น ํ๋์ ํ ์ด๋ธ์ธ ๊ฒ์ฒ๋ผ ํ์ฉํ ์ ์๋ค.
JOIN ์ ์ฌ์ฉํ๋ ์ด์
๋ฐ์ดํฐ๋ฅผ ์ค๋ณต ์ ์ฅํ๋ฉด ๊ทธ๋งํผ์ ์ ์ฅ๊ณต๊ฐ์ด ํ์ํ๋ค.
์ค๋ณต ์ ์ฅํ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๊ฒฝ์ฐ, ํด๋น ์ด์ ๊ฐ์ง ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ ๋ชจ๋ ์์ ํด์ผํ๋ค.
์ค๋ณต์ ์ต์ํํ๋ฉด์ ๋ค๋ฅธ ํ ์ด๋ธ๊ณผ ์กฐํฉ์ผ๋ก ๋ฐ์ดํฐ ์ ์ ๋ง๋ค๊ธฐ ์ํด์ ์กฐ์ธ์ด ํ์ํ๋ค.
JOIN ์ ์ข
๋ฅ
inner join
(left, right, full) outer join
cross join
self join
1 . INNER JOIN
์กฐ์ธํค์ ํด๋นํ๋ ๊ฐ ํ ์ด๋ธ์ ์ด ๊ฐ์ ๋น๊ตํด ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ ๊ฒ์ํ๋ค.
A์ B์ ๊ต์งํฉ
ON vs. WHERE
๋๋ค ๋ฐ์ดํฐ๋ฅผ ํํฐ๋ง ํ๋ค๋ ์ ์์๋ ์ญํ ์ด ๋น์ทํด๋ณด์
ON : ์กฐ์ธํ ๋ ์กฐ์ธ ์กฐ๊ฑด์ ์ํด์ ์ฌ์ฉ
WHERE : ์กฐ์ธ์ ์๋ฃํ ์ํ์์ ์กฐ๊ฑฐ์ ๋ง๋ ๊ฐ์ ํํฐ๋งํ๊ธฐ ์ํด ์ฌ์ฉ
ON ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ WHERE ์ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์๋ ์์ง๋ง, ๋ฐ์ดํฐ ๋งค์นญ ๊ณผ์ ์์ ์ค์ฐจ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ๋ฐ๋์ ์ฑ๊ฒฉ์ ๋ถ๋ฆฌํด์ ์ฌ์ฉํด์ผํ๋ค.
2. (left, right, full) OUTER JOIN
์กฐ์ธํ๋ ์ฌ๋ฌ ํ ์ด๋ธ์์ ํ์ชฝ์ ๋ฐ์ดํฐ๊ฐ ์๊ณ ํ์ชฝ์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๊ฐ ์๋ ์ชฝ ํ ์ด๋ธ์ ๋ด์ฉ์ ์ ๋ถ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ๋ค.
์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์๋ ํด๋น ํ์ ์ ๋ถ ์ถ๋ ฅํ๊ณ ์ ํ ๋ ์ฌ์ฉํ ์ ์๋ค.
3๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค. - LEFT, RIGHT, FULL
๊ธฐ์ค ํ ์ด๋ธ์ ์ง์ ํด์ผํ๋ค. - LEFT, RIGHT
LEFT JOIN
RIGHT JOIN
FULL OUTER JOIN
๋ณดํต ๋ง์ด ์ฐ์ด์ง ์๋๋ค.
์์ชฝ ํ ์ด๋ธ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋, ํ์ชฝ์๋ ์๊ณ ํ์ชฝ์๋ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด์ ์ข ์ข ์ฌ์ฉํ ์ ์๋ค.
3. CROSS JOIN
์กฐ์ธ์ ํฌํจ๋ ํ ์ด๋ธ์ ์นดํฐ์ ๊ณฑ์ ์ฐ์ถํ๋ค.
๊ฐ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์กฐํฉํ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
๊ฐ๊ฐ์ ์ปฌ๋ผ์ ์๋ก์๋ก ๋ชจ๋ ๋งค์นํ๊ธฐ ๋๋ฌธ์ from ๊ตฌ๋ฌธ์ ์กฐ์ธ ์กฐ๊ฑด์ด ์๋ค.
์ธ์ ์ฌ์ฉ๋๋
์๋ฅผ ๋ค๋ฉด ๋ชจ๋ ํ์๋ค์๊ฒ ์ฟ ํฐ 2์ข ๋ฅ์ฉ ๋ฟ๋ฆด ๋! ํ์ ํ ์ด๋ธ X ์์ ์ฟ ํฐ ํ ์ด๋ธ์ ํฌ๋ก์ค ์กฐ์ธํ ๊ฒฐ๊ณผ๋ฅผ ์ค์ ์ฟ ํฐ ํ ์ด๋ธ์ insert ํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
4. SELF JOIN
๊ฐ์ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ ํน์ํ ์กฐ์ธ์ด๋ค.
ํ ์ด๋ธ์ ํ์ ๊ฐ์ ํ ์ด๋ธ ์์ ์๋ ๋ค๋ฅธ ํ๊ณผ ์กฐ์ธํ๋ค.
๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ ์ด๋ธํ ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
๋ฐ๋์ ํ ์ด๋ธ์ alias ๋ช ์ ์ฌ์ฉํด์ ์ง์ํ๋ค.
SELF JOIN ๊ฐ๋ ์ ์ธ ์ ์ผ๋ก ๋ณ๋์ JOIN ๊ตฌ๋ฌธ์ด ์๋ค.
5. JOIN ์ ์ฃผ์์ฌํญ
outer join ์ฌ์ฉ์ ๊ธฐ์ค ํ ์ด๋ธ ์์์ ์ฃผ์ํ๋ค.
on ์ ๊ณผ where ์ ์ ๋ชฉ์ ์ ๋ง๊ฒ ๋ฐ๋์ ๊ตฌ๋ถํ๋ค.
outer join ๊ณผ์ ์์ ํ ์๊ฐ ๋์ด๋ ์ ์์์ ์ธ์งํ๋ค.
left outer join : 1:1 or N:1 ์ ๋ฌธ์ ์์ง๋ง
1:N ์ ๊ฒฝ์ฐ ๊ธฐ์ค ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ ํ์๊ฐ ๋์ด๋ ์ ์๋ค.
Last updated
Was this helpful?