์กฐ์ธ (JOIN)
์ฌ๋ฌ ํ
์ด๋ธ์ ์กฐํฉํ์ฌ ์กฐํํ๋ ๋ฐฉ์
์กฐ์ธ ์ข ๋ฅ
โข
๋ด๋ถ์กฐ์ธ
โฆ
๋๋ฑ ์กฐ์ธ
โฆ
์ธ๋ฏธ ์กฐ์ธ
โฆ
์ํฐ ์กฐ์ธ
โฆ
์
ํ ์กฐ์ธ
โข
์ธ๋ถ์กฐ์ธ
โฆ
(+)
โฆ
ANSI ์กฐ์ธ
โช
LEFT OUTER JOIN
โช
RIGTH OUTER JOIN
โช
FULL OUTER JOIN
โช
CROSS JOIN (์นดํ์์ ์กฐ์ธ)
๋ด๋ถ ์กฐ์ธ (INNER JOIN)
โข
๋๋ฑ ์กฐ์ธ
โข
์ธ๋ฏธ ์กฐ์ธ
โข
์ํฐ ์กฐ์ธ
โข
์
ํ ์กฐ์ธ
๋๋ฑ ์กฐ์ธ (EQUI JOIN)
๋ฑํธ(=) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ, 2๊ฐ ์ด์์ ํ
์ด๋ธ์ ์ฐ๊ฒฐ์ง์ด ์ถ๋ ฅํ๋ ๋ฐฉ์
ex)
SELECT *
FROM A, B
WHERE A.x = B.y;
SQL
๋ณต์ฌ
INNER JOIN
์ผ์ชฝ ํ
์ด๋ธ๊ณผ ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ์กฐ์ธ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ต์งํฉ์ด ๋๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฐฉ์
ex)
SELECT *
FROM A INNER JOIN B
ON (A.x = B.y);
SQL
๋ณต์ฌ
์ธ๋ฏธ ์กฐ์ธ (SEMI JOIN)
์๋ธ ์ฟผ๋ฆฌ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ง ๋ฉ์ธ ์ฟผ๋ฆฌ์์ ์ถ์ถํ์ฌ ์ถ๋ ฅํ๋ ๋ฐฉ์
์ํฐ ์กฐ์ธ (ANTI JOIN)
์๋ธ ์ฟผ๋ฆฌ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ง ์ ์ธํ๊ณ ๋ฉ์ธ ์ฟผ๋ฆฌ์์ ์ถ์ถํ์ฌ ์ถ๋ ฅํ๋ ๋ฐฉ์
์ ํ ์กฐ์ธ (SELF JOIN)
๋์ผํ ํ๋์ ํ
์ด๋ธ์ 2๋ฒ์ด์ ์กฐํฉํ์ฌ ์ถ๋ ฅํ๋ ๋ฐฉ์
์ธ๋ถ ์กฐ์ธ (OUTER JOIN)
โข
LEFT OUTER JOIN
โข
RIGTH OUTER JOIN
โข
FULL OUTER JOIN
โข
CROSS JOIN (์นดํ์์ ์กฐ์ธ)
LEFT OUTER JOIN
์ผ์ชฝ ํ
์ด๋ธ์ ๋จผ์ ์ฝ์ด๋๋ฆฐ ํ,
์กฐ์ธ ์กฐ๊ฑด์ ์ผ์นํ๋ ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ํจ๊ป ์กฐํํ๋ ๊ฒ
1.
ANSI
ํ
์ด๋ธ1 A LEFT [OUTER] JOIN ํ
์ด๋ธ2 B ON ์กฐ์ธ์กฐ๊ฑด;
SQL
๋ณต์ฌ
2.
(+)
WHERE A.๊ณตํต์ปฌ๋ผ = B.๊ณตํต์ปฌ๋ผ(+)
SQL
๋ณต์ฌ
RIGHT OUTER JOIN
์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ๋จผ์ ์ฝ์ด๋๋ฆฐ ํ,
์กฐ์ธ ์กฐ๊ฑด์ ์ผ์นํ๋ ์ผ์ชฝ ํ
์ด๋ธ์ ํจ๊ป ์กฐํํ๋ ๊ฒ
1.
ANSI
ํ
์ด๋ธ1 A RIGHT [OUTER] JOIN ํ
์ด๋ธ2 B ON ์กฐ์ธ์กฐ๊ฑด;
SQL
๋ณต์ฌ
2.
(+)
WHERE A.๊ณตํต์ปฌ๋ผ(+) = B.๊ณตํต์ปฌ๋ผ
SQL
๋ณต์ฌ
FULL OUTER JOIN
์กฐ์ธ ์กฐ๊ฑด์ ์ผ์นํ๋ ์์ชฝ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ์ฌ ์กฐํํ๋ ๊ฒ
ํ
์ด๋ธ1 A FULL [OUTER] JOIN ํ
์ด๋ธ2 B ON ์กฐ์ธ์กฐ๊ฑด;
SQL
๋ณต์ฌ
FULL JOIN ์ MySQL ์์ ์ง์ ์ง์ํ์ง ์๋๋ค.
SELECT *
FROM A
LEFT JOIN B ON A.x = B.y
UNION
SELECT *
FROM A
RIGHT JOIN B ON A.x = B.y
SQL
๋ณต์ฌ
์นดํ์์ ์กฐ์ธ (Cartesian; CATASIAN PRODUCT) : CROSS ์กฐ์ธ
WHERE ์ ์ ์กฐ์ธ ์กฐ๊ฑด์ด ์๋ ์กฐ์ธ
โข
A ํ
์ด๋ธ์ ๋ฐ์ดํฐ ๊ฑด์ : X
โข
B ํ
์ด๋ธ์ ๋ฐ์ดํฐ ๊ฑด์ : Y
โข
๊ฒฐ๊ณผ ๊ฑด์ : X * Y (๋ ํ
์ด๋ธ์ ๊ณฑ)
ex) SELECT *
FROM employees e
,departments d;
SQL
๋ณต์ฌ
โข
์นดํ์์ ์กฐ์ธ์ ANSI ๋ฌธ๋ฒ์์๋ CROSS ์กฐ์ธ์ด๋ผ๊ณ ํ๋ค
ex) SELECT *
FROM employees e
CROSS JOIN departments d;
SQL
๋ณต์ฌ