๐Join์ ์ข
๋ฅ
๐ก๋ด๋ถ ์กฐ์ธ(inner join)
์ผ์ชฝ ํ
์ด๋ธ๊ณผ ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ๋ ํ์ด ๋ชจ๋ ์ผ์นํ๋ ํ์ด ์๋ ๋ถ๋ถ๋ง ํ๊ธฐ
SELECT * FROM table1_name A
INNER JOIN table2_name B ON
A.key = B.key
๐ก์ผ์ชฝ ์กฐ์ธ(left outer join)
์ผ์ชฝ ํ
์ด๋ธ(A)์ ๋ชจ๋ ํ์ด ๊ฒฐ๊ณผ ํ
์ด๋ธ์ ํ๊ธฐ
- ํ
์ด๋ธ B์ ์ผ์นํ๋ ๋ถ๋ถ์ ๋ ์ฝ๋์ ํจ๊ป ํ
์ด๋ธ A๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ํ ๋ ์ฝ๋ ์งํฉ์ ์์ฑ
โ๏ธ ํ
์ด๋ธ B์ ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ํด๋น ๊ฐ์ null ๊ฐ์ด ํ๊ธฐ
SELECT * FROM table1_name A
LEFT JOIN table2_name B ON
A.key = B.key
๐ก์ค๋ฅธ์ชฝ ์กฐ์ธ(right outer join)
์ค๋ฅธ์ชฝ ํ
์ด๋ธ(B)์ ๋ชจ๋ ํ์ด ๊ฒฐ๊ณผ ํ
์ด๋ธ์ ํ๊ธฐ
- ํ
์ด๋ธ A์์ ์ผ์นํ๋ ๋ถ๋ถ์ ๋ ์ฝ๋์ ํจ๊ป ํ
์ด๋ธ B๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ํ ๋ ์ฝ๋ ์งํฉ์ ์์ฑ
โ๏ธ ํ
์ด๋ธ A์ ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ํด๋น ๊ฐ์ null ๊ฐ์ด ํ๊ธฐ
SELECT * FROM table1_name A
RIGHT JOIN table2_name B ON
A.key = B.key
๐กํฉ์งํฉ ์กฐ์ธ(full outer join)
๋ ๊ฐ์ ํ
์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ์ธ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ํ๊น์ง ๋ชจ๋ ํ๊ธฐ
โ๏ธ ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ๋๋ฝ๋ ์ชฝ์ null ๊ฐ์ด ํฌํจ๋์ด ์ถ๋ ฅ
SELECT * FROM table1_name A
FULL OUTER JOIN table2_name B ON
A.key = B.key
๐Join์ ์๋ฆฌ
๐ก์ค์ฒฉ ๋ฃจํ ์กฐ์ธ(Nested Loop Join)
์ค์ฒฉ for๋ฌธ๊ณผ ๊ฐ์ ์๋ฆฌ๋ก ์กฐ๊ฑด์ ๋ง๋ ์กฐ์ธ์ ํ๋ ๋ฐฉ๋ฒ
- ๋๋ค ์ ๊ทผ์ ๋ํ ๋น์ฉ์ด ๋ง์ด ์ฆ๊ฐ -> ๋์ฉ๋ ํ
์ด๋ธ์์๋ ์ฌ์ฉํ์ง ์๋๋ค.
๐ก์ ๋ ฌ ๋ณํฉ ์กฐ์ธ
๊ฐ๊ฐ์ ํ
์ด๋ธ์ ์กฐ์ธํ ํ๋ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ ๋ ฌ์ด ๋๋ ์ดํ์ ์กฐ์ธ ์์
์ ์ํํ๋ ์กฐ์ธ
- ์กฐ์ธํ ๋ ์ธ ์ ์ ํ ์ธ๋ฑ์ค๊ฐ ์๊ณ ๋์ฉ๋์ ํ
์ด๋ธ์ ์กฐ์ธํ ๋ ์ฌ์ฉ
- ์กฐ์ธ ์กฐ๊ฑด์ผ๋ก <,> ๋ฑ ๋ฒ์ ๋น๊ต ์ฐ์ฐ์๊ฐ ์์ ๋ ์ฌ์ฉ
๐กํด์ ์กฐ์ธ
ํด์ ํ
์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ์ธํ๋ ๋ฐฉ๋ฒ
- ๋ ๊ฐ์ ํ
์ด๋ธ์ ์กฐ์ธํ ๋, ํ๋์ ํ
์ด๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์จ์ ํ ๋ค์ด๊ฐ๋ค๋ฉด ๋ณดํต ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ๋ณด๋ค ๋ ํจ์จ์ ์ด๋ค.
- ๋๋ฑ ์กฐ์ธ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
-
๋น๋ ๋จ๊ณ
- ์
๋ ฅ ํ
์ด๋ธ ์ค ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ด ํด์ ํ
์ด๋ธ์ ๋น๋ํ๋ ๋จ๊ณ
- ์กฐ์ธ์ ์ฌ์ฉ๋๋ ํ๋๊ฐ ํด์ ํ
์ด๋ธ์ ํค๋ก ์ฌ์ฉ๋๋ค.
-
ํ๋ก๋ธ ๋จ๊ณ
- ํ๋ก๋ธ ๋จ๊ณ ๋์ ๋ ์ฝ๋ ์ฝ๊ธฐ๋ฅผ ์์ํ๋ฉฐ, ๊ฐ ๋ ์ฝ๋์์ ํด๋น ๋ฐ์ดํฐ์ ์ผ์นํ๋ ๋ ์ฝ๋๋ฅผ ์ฐพ์์ ๊ฒฐ๊ด๊ฐ์ผ๋ก ๋ฐํ
- ๊ฐ ํ
์ด๋ธ์ ํ๋ฒ์ฉ๋ง ์ฝ๊ฒ ๋์ด ์ค์ฒฉํด์ ๋ ๊ฐ์ ํ
์ด๋ธ์ ์ฝ๋ ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ๋ณด๋ค ์ฑ๋ฅ์ด ์ข๋ค.