FROM ์ ์ JOIN ํํ
(์ถ๊ฐ๋ ์ ํ ๊ธฐ๋ฅ์ผ๋ก ํ ์ด๋ธ ๊ฐ์ JOIN ์กฐ๊ฑด์ FROM์ ์์ ๋ช ์์ ์ผ๋ก ์ ์ํ ์ ์๊ฒ ๋์๋ค.)
-INNER JOIN
-NATURAL JOIN
-USIN ์กฐ๊ฑด์
-ON ์กฐ๊ฑด์
-CROSS JOIN
-OUTER JOIN
โปSQL server์ ๊ฒฝ์ฐ ON ์กฐ๊ฑด์ ๋ง ์ง์ํ๊ณ NATURAL JOIN๊ณผ USING ์ ์ง์ํ์ง ์๋๋ค.
1)INNER JOIN
- ๋ด๋ถ JOIN์ด๋ผ๊ณ ํ๋ฉฐ JOIN ์กฐ๊ฑด์์ ๋์ผํ ๊ฐ์ด ์๋ ํ๋ง ๋ฐํํ๋ค.
- INNER JOIN ํ์๋ ๊ทธ๋์ WHERE ์ ์์ ์ฌ์ฉํ๋ JOIN ์กฐ๊ฑด์ FROM์ ์์ ์ ์ํ๊ฒ ๋ค๋ ํ์์ด๋ฏ๋ก
๋ค์ ON, USING ๊ผญ ์จ์ฃผ์ด์ผ ํจ
- ์์)
SELECT EMP.DEPTNO, EMPNO, ENAME, DNAME
FROM EMP INNER JOIN DEPT
ON EMP.DEPTNO = DEPT.DEPTNO;
(INNER ํค์๋๋ ์๋ต ๊ฐ๋ฅ)
2)NATURAL JOIN
- ๋ ํ ์ด๋ธ ๊ฐ์ ๋์ผํ ์ด๋ฆ์ ๊ฐ๋ ๋ชจ๋ ์ปฌ๋ผ๋ค์ ๋ํด EQUI JOIN์ ์ํํ๋ค.
- NATURAL JOIN์ด ๋ช ์๋์์ผ๋ฉด, ์ถ๊ฐ๋ก USING ์กฐ๊ฑด์ , ON ์กฐ๊ฑด์ , WHERE ์ ์์ JOIN ์กฐ๊ฑด์ ์ ์ํ ์ ์๋ค.
- JOIN์ ์ฌ์ฉ๋ ์นผ๋ผ๋ค์ ๊ฐ์ ๋ฐ์ดํฐ ์ ํ์ด์ด์ผ ํ๋ฉฐ, ALIAS๋ ํ ์ด๋ธ ๋ช ๊ณผ ๊ฐ์ ์ ๋์ฌ๋ฅผ ๋ถ์ผ ์ ์๋ค.
- ์์)
SELECT DEPTNO, EMPNO, ENAME, DNAME
FROM EMP NATURAL JOIN DEPT;
3)USING ์กฐ๊ฑด์
- FROM์ ์ USING ์กฐ๊ฑด์ ์ ์ด์ฉํ๋ฉด ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์นผ๋ผ๋ค ์ค์์ ์ํ๋ ์นผ๋ผ์ ๋ํด์๋ง ์ ํ์ ์ผ๋ก EQUI JOINํ ์ ์๋ค.
- NATURAL JOIN๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก JOIN์ ์ฌ์ฉ๋ ์ปฌ๋ผ๋ค์ ๊ฐ์ ๋ฐ์ดํฐ ์ ํ์ด์ด์ผ ํ๋ฉฐ, ALIAS๋ ํ ์ด๋ธ ๋ช ๊ณผ ๊ฐ์ ์ ๋์ฌ๋ฅผ ๋ถ์ผ ์ ์๋ค.
- ์์)
SELECT DEPTNO, DNAME, DEPT.LOC
FROM DEPT JOIN DEPT_TEMP
USING (DEPTNO, DNAME);
4)ON ์กฐ๊ฑด์
- ์์์ JOIN ์กฐ๊ฑด์ ์ง์ ํ๊ฑฐ๋, ์ด๋ฆ์ด ๋ค๋ฅธ ์นผ๋ผ๋ช ์ JOIN ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋, JOIN ์นผ๋ผ์ ๋ช ์ํ๊ธฐ ์ํด์๋
ON ์กฐ๊ฑด์ ์ ์ฌ์ฉํ๋ค.
- ON ์กฐ๊ฑด์ ๊ณผ WHERE ๊ฒ์์กฐ๊ฑด์ ์ถฉ๋ ์์ด ์ฌ์ฉํ ์ ์๋ค.
- WHERE ์ ์ JOIN ์กฐ๊ฑด๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ฉด์๋, ๋ช ์์ ์ผ๋ก JOIN์ ์กฐ๊ฑด์ ๊ตฌ๋ถํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
- ์์)
SELECT E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
FROM EMP E JOIN DEPT D
ON (E.DEPTNO = D.DEPTNO);
SELECT E.ENAME, E.DEPTNO, D.DEPTNO, D.DNAME
FROM EMP E JOIN DEPT D
ON (E.DEPTNO = D.DEPTNO)
WHERE E.DEPTNO = 30;
(๊ดํธ๋ ์๋ต๊ฐ๋ฅ)
+) ON ์กฐ๊ฑด์ - ๋ค์ค ์กฐ์ธ
ํ์คํ ํ ์ด๋ธ์ด ๋ง์์ง ๊ฒฝ์ฐ ๋ณต์กํด๋ณด์ธ๋ค๋ ๋จ์ ์ด ์กด์ฌ.
5) CROSS JOIN
- JOIN ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ์๊ธธ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ์กฐํฉ
- ์์ชฝ ์งํฉ์ M*N ๊ฑด์ ๋ฐ์ดํฐ ์กฐํฉ์ด ๋ฐ์ํ๋ค.
6) OUTER JOIN
์กฐ์ธ์ ์คํจํ ํ๋ค์ ๊ฒฝ์ฐ ๊ธฐ์ค ํ ์ด๋ธ์ ์นผ๋ผ๋ค์ ๊ฐ์ด ํ์๋๊ณ , ๊ทธ ์ธ ํ ์ด๋ธ์์ ๊ฐ์ ธ์ค๋ ์นผ๋ผ๋ค์ NULL๋ก ํ์๊ดธ๋ค.
- LEFT OUTER JOIN
์ข์ธก ํ ์ด๋ธ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ฝ์ ํ ์ฐ์ธก ํ ์ด๋ธ์์ JOIN ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
์ฐ์ธก ํ ์ด๋ธ์์ ๊ฐ์ ธ์ค๋ ์นผ๋ผ๋ค์ ์กฐ์ธ ์กฐ๊ฑด ๊ฐ์ด ์๋ ๊ฒฝ์ฐ NULL ๊ฐ์ผ๋ก ์ฑ์ด๋ค.
LEFT JOIN์ผ๋ก OUTER ํค์๋๋ฅผ ์๋ตํด์ ์ฌ์ฉํ ์ ์๋ค.
- RIGHT OUTER JOIN
์ฐ์ธก ํ ์ด๋ธ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ฝ์ ํ ์ข์ธก ํ ์ด๋ธ์์ JOIN ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
์๊น์ ๋ฐ๋๋ก ์๊ฐํ๋ฉด ๋๋ค.
RIGHT JOIN์ผ๋ก OUTER ํค์๋๋ฅผ ์๋ตํด์ ์ฌ์ฉํ ์ ์๋ค.
- FULL OUTER JOIN
์กฐ์ธ ์ํ์ ์ข์ธก, ์ฐ์ธก ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์กฐ์ธํ๋ค.
์ฆ ํ ์ด๋ธ A,B๊ฐ ์์ ๋ A์ B๊ฐ ๋ชจ๋ ๊ธฐ์ค์ด ๋๋ค.
UNION ALL ์ด ์๋ UNION ๊ธฐ๋ฅ๊ณผ ๊ฐ์ผ๋ฏ๋ก ์ค๋ณต๋๋ ๋ฐ์ดํฐ๋ ์ญ์ ํ๋ค.
FULL JOIN์ผ๋ก OUTER ํค์๋๋ฅผ ์๋ตํด์ ์ฌ์ฉํ ์ ์๋ค.