์กฐ์ธ์ด๋
- ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
- ํ ์ด๋ธ์ ์ฐ๊ฒฐํ๋ ค๋ฉด, ์ ์ด๋ ํ๋์ ์นผ๋ผ์ ์๋ก ๊ณต์ ํ๊ณ ์์ด์ผ ํ๋ฏ๋ก ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ๊ฒ์์ ํ์ฉํ๋ค.
- INNER JOIN
- LEFT OUTER JOIN
- RIGHT OUTER JOIN
- FULL OUTER JOIN
- CROSS JOIN
- SELF JOIN
๋ฌธ๋ฒ
SELECT
ํ
์ด๋ธ๋ณ์นญ.์กฐํํ ์ปฌ๋ผ,
ํ
์ด๋ธ๋ณ์นญ.์กฐํํ ์ปฌ๋ผ
FROM ๊ธฐ์คํ
์ด๋ธ ๋ณ์นญ
INNER JOIN ์กฐ์ธํ
์ด๋ธ ๋ณ์นญ ON ๊ธฐ์คํ
์ด๋ธ๋ณ์นญ.๊ธฐ์คํค = ์กฐ์ธํ
์ด๋ธ๋ณ์นญ.๊ธฐ์คํค ...
1) INNER JOIN
- ์ฝ๊ฒ ๋งํด ๊ต์งํฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ๊ธฐ์ค ํ ์ด๋ธ๊ณผ Joinํ ํ ์ด๋ธ์ ์ค๋ณต๋ ๊ฐ์ ๋ณด์ฌ์ค๋ค.
- ๊ฒฐ๊ณผ๊ฐ์ A์ ํ ์ด๋ธ๊ณผ B ํ ์ด๋ธ์ด ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ง ๊ฒ์๋๋ค.
Ex)
SELECT
A.NAME,
B.AGE
FROM EX_TABLE A
INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
2) LEFT OUTER JOIN
- ๊ธฐ์ค ํ ์ด๋ธ์ ๊ฐ + ํ ์ด๋ธ๊ณผ ๊ธฐ์คํ ์ด๋ธ์ ์ค๋ณต๋ ๊ฐ์ ๋ณด์ฌ์ค๋ค.
- ์ผ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก Join์ ํ๊ฒ ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ๊ฒฐ๊ณผ๊ฐ์ A ํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ๊ณผ A ํ ์ด๋ธ๊ณผ B ํ ์ด๋ธ์ ์ค๋ณต๋๋ ๊ฐ์ด ๊ฒ์๋๋ค.
SELECT
A.NAME,
B.AGE
FROM EX_TABLE A
LEFT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
3) RIGHT OUTER JOIN
- LEFT OUTER JOIN์ ๋ฐ๋์ด๋ค.
- ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก Join์ ํ๊ฒ ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ๊ฒฐ๊ณผ๊ฐ์ B ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ์ A ํ ์ด๋ธ๊ณผ B ํ ์ด๋ธ์์ ์ค๋ณต๋๋ ๊ฐ์ด ๊ฒ์๋๋ค.
SELECT
A.NAME,
B.AGE
FROM EX_TABLE A
RIGHT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
4) FULL OUTER JOIN
- ์ฝ๊ฒ ๋งํด ํฉ์งํฉ์ ์๊ฐํ๋ฉด ๋๋ค.
- A ํ ์ด๋ธ์ด ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ, B ํ ์ด๋ธ์ด ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ ๋ชจ๋ ๊ฒ์๋๋ค.
- ์ฌ์ค์, ๊ธฐ์ค ํ ์ด๋ธ์ ์๋ฏธ๊ฐ ์๋ค.
SELECT
A.NAME,
B.AGE
FROM EX_TABLE A
FULL OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
5) CROSS JOIN
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ๋ถ ํํํด์ฃผ๋ ๋ฐฉ์์ด๋ค.
- ๊ธฐ์ค ํ ์ด๋ธ์ด A์ผ ๊ฒฝ์ฐ, A์ ๋ฐ์ดํฐ ํ ROW๋ฅผ B ํ ์ด๋ธ ์ ์ฒด์ JOINํ๋ ๋ฐฉ์์ด๋ค.
- ๊ฒฐ๊ณผ๊ฐ์ N*M์ด๋ค.
- ์์ ๊ฒฝ์ฐ A ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ 3๊ฐ, B ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ 4๊ฐ๊ฐ ์์ผ๋ฏ๋ก ์ด 12๊ฐ๊ฐ ๊ฒ์๋๋ค.
--์ฒซ ๋ฒ์งธ ๋ฐฉ์--
SELECT
A.NAME,
B.AGE
FROM EX_TABLE A
CROSS JOIN JOIN_TABLE B
--๋ ๋ฒ์งธ ๋ฐฉ์--
SELECT
A.NAME,
B.AGE
FROM EX_TABLE A, JOIN_TABLE B
- SELF JOIN
- ์๊ธฐ ์์ ๊ณผ ์๊ธฐ ์์ ์ ์กฐ์ธํ๋ค๋ ์๋ฏธ์ด๋ค.
- ํ๋์ ํ ์ด๋ธ์ ์ฌ๋ฌ๋ฒ ๋ณต์ฌํด์ ์กฐ์ธํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ์์ ์ด ๊ฐ์ง๊ณ ์๋ ์นผ๋ผ์ ๋ค์ํ๊ฒ ๋ณํ์์ผ ํ์ฉํ ๊ฒฝ์ฐ์ ์์ฃผ ์ฌ์ฉํ๋ค.
SELECT
A.NAME,
B.AGE
FROM EX_TABLE A, EX_TABLE B