Database Study/SQL
[Oracle DB]Join 종류
exp9405
2020. 1. 6. 20:58
반응형
join을 통해 2개 이상의 테이블을 연결하여 원하는 데이터로 정제
- EQUIJOIN : 두 개의 테이블 간에 칼럼값들이 정확하게 일치하는 경우 사용(PK = FK)
- NON - EQUIJOIN : 두 개의 테이블 간에 칼럼값들이 서로 정확하게 일치하지 않는 경우 사용
- OUTER JOIN : 두 개의 테이블 간의 JOIN 걸었을 때, JOIN 조건 만족하지 않는 경우에도 그 테이블을 보고자 하는 경우(+) 연산자 사용하는 조인
- SELF JOIN : 같은 테이블에 있는 행동을 JOIN 하는데 사용
EQUI JOIN VS OUTER JOIN
-- Equi Join 으로 부서 번호를 조회하는 예제
SELECT DISTINCT(e.deptno), d.deptno, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno;
DEPTNO DEPTNO
------ ----------
10 10
20 20
30 30
-- Outer Join 으로 부서 번호를 조회하는 예제
SELECT DISTINCT(e.deptno), d.deptno
FROM emp e, dept d
WHERE e.deptno(+) = d.deptno;
DEPTNO DEPTNO
------- --------
10 10
20 20
30 30
40
-- ename LIKE 조건절에 (+)연산자가 누락된 경우
SELECT DISTINCT(a.deptno), b.deptno
FROM emp a, dept b
WHERE a.deptno(+) = b.deptno
AND a.ename LIKE '%';
DEPTNO DEPTNO
---------- ----------
10 10
20 20
30 30
-- ename LIKE 조건절에 (+)연산자를 추가해야 정상적으로 데이터가 조회 된다.
SELECT DISTINCT(a.deptno), b.deptno
FROM emp a, dept b
WHERE a.deptno(+) = b.deptno
AND a.ename(+) LIKE '%';
DEPTNO DEPTNO
------- --------
10 10
20 20
30 30
40
LEFT OUTER JOIN : 오른쪽 테이블에 조인시킬 컬럼의 값이 없는 경우 사용
-- LEFT OUTER JOIN 조인 예제
SELECT DISTINCT(e.deptno), d.deptno
FROM dept d
LEFT OUTER JOIN emp e
ON d.deptno = e.deptno;
RIGHT OUTER JOIN : 왼쪽 테이블에 조인시킬 컬럼의 값이 없는 경우
-- RIGHT OUTER JOIN 조인 예제
SELECT DISTINCT(e.deptno), d.deptno
FROM emp e
RIGHT OUTER JOIN dept d
ON e.deptno = d.deptno;
FULL OUTER JOIN : 양쪽 테이블 모두 OUTER JOIN 걸어야 하는 경우 사용
-- FULL OUTER JOIN 조인 예제
SELECT DISTINCT(e.deptno), d.deptno
FROM emp e
FULL OUTER JOIN dept d
ON e.deptno = d.deptno;
반응형