Oracle SQL(3) JOIN
๐ JOIN
์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ์ ๋ณํฉํ์ฌ ํ๋์ ๊ฒฐ๊ณผ๋ก ๋ฝ์๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์ค๋ฌด ์์๋ ์ด ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
์์ ํ ์ด๋ธ
1) INNER JOIN
๊ต์งํฉ์ ํด๋นํ๋ ๊ฐ๋ ์ด๋ค.
- ํ ์ด๋ธ์ ๋ณ๋ช ์ ์ค์ ์กฐ์ธ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ๋ณ๋ช ์ ์ค ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ๊ทธ ๋ณ๋ช ๋ง์ ์ฌ์ฉํด์ผ ํ๋ค.
- ์ ์ผ ๊ธฐ๋ณธ์ด ๋๋ ์กฐ์ธ์ผ๋ก ์ด๋ค ์กฐ์ธ์ธ์ง ๋ช ์ํ์ง ์๊ณ join ์ด๋ผ๊ณ ๋ง ์ ์ผ๋ฉด inner join์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋๋ค.
- ์ค๋ฌด ์์ : ์ ๋ฐ ์ ํ๊ณผ ์๋ฅ ์ ํ์ ๋ชจ๋ ๊ตฌ๋งคํ ๊ณ ๊ฐ๋ค์ ๊ฒ์
2) OUTER JOIN
INNER JOIN + ๊ณตํต๋์ง ์์ ๋ ์ฝ๋
LEFT OUTER JOIN
- FROM TABLE์ด ๊ธฐ์ค์ด๋ค.
- ์ค๋ฌด ์์ : ์ ๋ฐ์ ๊ตฌ๋งคํ ์ฌ๋๋ค ์ค ํฐ์ ์ธ ๋ฅผ ์ฐ ์ฌ๋๊ณผ ์๋ ์ฌ๋์ ๊ตฌ๋ถํด์ ๋ณด๊ณ ์ถ์ ๊ฒฝ์ฐ
RIGHT OUTER JOIN
- OUTER JOIN TABLE์ด ๊ธฐ์ค์ด๋ค.
- ์ค๋ฌด ์์ : ํฐ์ ์ธ ๋ฅผ ๊ตฌ๋งคํ ์ฌ๋๋ค ์ค ์ ๋ฐ์ ์ฐ ์ฌ๋๊ณผ ์๋ ์ฌ๋์ ๊ตฌ๋ถํด์ ๋ณด๊ณ ์ถ์ ๊ฒฝ์ฐ
FULL OUTER JOIN
- ๋ชจ๋ ๋ฐ์ดํฐ ์กฐํ๋ฅผ ์ํ ํฉ์งํฉ์ ๊ฐ๋ ์ผ๋ก ์ฌ์ค์ ์ค๋ฌด์์๋ ๊ฑฐ์ ํ์ฉ๋์ง ์๋๋ค.
Oracle-Specific ๋ฌธ๋ฒ
- ์ด๋ฐ ์์ผ๋ก ์ค๋ฅธ์ชฝ์ (+)๋ฅผ ๋ถ์ด๋ฉด left, ์ผ์ชฝ์ (+)๋ฅผ ๋ถ์ด๋ฉด right outer join์ ๊ตฌํ ์ ์๋ค.
- full outer join์ ์ด ๋ฌธ๋ฒ์ ํ์ฉํ ์ ์๋ค.
3) EQUI JOIN
- ์ฌ์ค์ inner join๊ณผ ๋์์ด ๊ฐ์ผ๋ฉฐ equi join์ from ์ ์ ํ ์ด๋ธ ๋ ๊ฐ๋ฅผ ๋ช ์ํ๊ณ where ์ ์์ ์กฐ์ธ ์กฐ๊ฑด์ ๋ช ์ํ๋ค.
- inner join์ ์กฐ์ธ ์กฐ๊ฑด์ on ์ ์์ ๋ช ์ํ๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
- natural join์ ๊ฐ์ ์์ฑ์ ์ ๊ฑฐํ์ฌ ํ ๋ฒ๋ง ํํํ๋ ๋ฐฉ์์ด๋ค(equi join์ ์์ผ๋ ์นด๋(*)๋ก ์กฐํ๋ฅผ ํ์ ๋, ๋ ๋ฒ์ฉ ๋ํ๋จ).
4) NON EQUI JOIN
์ปฌ๋ผ ๊ฐ์ด ์ผ์นํ์ง ์์ ๋ ์ฌ์ฉํ๋ฉฐ, โ=โ์ด์ธ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. inner join, equi join๊ณผ ์ฌ์ฉ๋ฐฉ์์ด ๋์ผํ์ง๋ง ์ฐ์ฐ์๋ง ๋ฐ๋ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ค.
ํ์ฉ ์์
์ง์์ ์ฌ๋ฒ, ์ด๋ฆ, ๊ธ์ฌ, ๊ธ์ฌ ๋ฑ๊ธ์ ์กฐํํ์์ค.
#inner join ๊ตฌ๋ฌธ ๋ฐฉ์์ผ๋ก non equi join ์์ฑ
select empno, ename, sal, grade from emp
inner join salgrade
on sal >= losal and sal <= hisal;
#equi join ๊ตฌ๋ฌธ ๋ฐฉ์์ผ๋ก non equi join ์์ฑ
select empno, ename, sal, grade
from emp, salgrade
where sal between losal and hisal;
5) SELF JOIN
๋์ผํ ํ ์ด๋ธ์์ 2๊ฐ์ ์์ฑ์ ์ฐ๊ฒฐํ์ฌ equi join์ ์งํํ๋ค. ์ด ๋ํ equi join ๋๋ inner join ๋ ๊ตฌ๋ฌธ ๋ค ํ์ฉ ๊ฐ๋ฅํ๋ค.
ํ์ฉ ์์
์ง์์ ์ฌ๋ฒ, ์ด๋ฆ, ์ง์์์ฌ์ ์ฌ๋ฒ, ์ด๋ฆ์ ์กฐํํ์์ค.
select e1.empno, e1.ename, e1.mgr, e2.ename from emp e1
inner join emp e2
on e1.mgr = e2.empno;
SET ์ฐ์ฐ์
join์ ๋ ํ ์ด๋ธ์ ํฉ์ณ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ๋ฐฉ์์ด๋ผ๋ฉด, set์ ๊ฐ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋จผ์ ๋ฝ๊ณ , ํฉ์น๋ค.
#๊ตฌ๋ฌธ
SELECT * FROM TBL1
[SET ์ฐ์ฐ์]
SELECT * FROM TBL2;
1) UNION
2) UNION ALL
union์ ๊ฒฐ๊ณผ์์ ์ค๋ณต์ ์ ๊ฑฐํ ๊ฒฐ๊ณผ
๋๊ธ๋จ๊ธฐ๊ธฐ