[Oracle] 오라클 RIGHT OUTER JOIN 사용법
- 데이터베이스/오라클
- 2023. 3. 7.
오라클에서 RIGHT OUTER JOIN은 아우터 조인(외부조인)에서 사용하는 방법 중 하나이다. RIGHT OUTER JOIN은 OUTER 키워드를 생략하고 RIGHT JOIN으로 사용하기도 한다. RIGHT OUTER JOIN은 ANSI JOIN 문법이며 오라클 10g 이상에서 사용할 수 있다. 일반적인 오라클 조인과 ANSI JOIN의 비교는 하단의 링크를 참고하면 된다.
RIGHT OUTER JOIN을 학습하기 전에 LEFT OUTER JOIN을 먼저 학습하면 이해하기 쉬울 것이다.
목차 |
※ 예제의 emp 테이블은 설명을 위해 인위적으로 만든 테이블이며 하단의 첨부파일을 참고하면 된다.
RIGHT OUTER JOIN - 기본 사용법
SELECT a.empno
, a.ename
, a.job
, a.deptno
, b.dname
FROM emp a
RIGHT OUTER JOIN dept b
ON a.deptno = b.deptno
WHERE b.deptno IN (10, 20, 30, 40)
emp 테이블과 dept 테이블 RIGHT OUTER JOIN 예제이다.
RIGHT의 의미는 오른쪽 테이블을 기준 테이블로 지정한다는 의미이다. ( emp RIGHT OUTER JOIN dept )
기준 테이블(dept)의 데이터(d.name)는 모두 표시된다.
조인 테이블(emp)은 조인된 데이터는 표시되고 조인되지 않은 데이터는 NULL이 표시된다.
deptno = 90은 조인이 되지 않기 때문에 empno, ename, job, deptno 값이 NULL로 표시된다.
아우터 조인은 조인이 되지 않더라도 기준 테이블(dept)의 모든 데이터는 출력된다.
조인되지 않은 데이터는 조인 테이블(emp)의 데이터를 끌어와서 표시할 수 없다. (NULL로 표시)
RIGHT OUTER JOIN은 OUTER 키워드를 생략하고 RIGHT JOIN으로 사용해도 동일한 결과가 조회된다.
특수한 상황이 아니면 OUTER 키워드를 같이 사용하는 것이 좋다.
RIGHT OUTER JOIN - 조인 칼럼이 여러 개인 경우
SELECT a.empno
, a.ename
, a.job
, a.deptno
, b.dname
, b.locno
FROM emp a
RIGHT OUTER JOIN dept b
ON a.deptno = b.deptno
AND a.locno = b.locno
WHERE b.deptno IN (10, 20, 30, 40)
emp 테이블과 dept 테이블을 deptno, locno 두 개의 칼럼으로 RIGHT OUTER JOIN 하는 예제이다.
조인 칼럼이 여러 개인 경우 AND를 순차적으로 사용하여 칼럼을 조인하면 된다.
deptno, locno 칼럼의 값이 동시에 일치할 경우 데이터를 표시하고, 일치하지 않으면 NULL을 표시하는 것을 확인할 수 있다.
RIGHT OUTER JOIN - 조인 테이블이 여러 개인 경우
SELECT a.empno
, a.ename
, a.job
, b.deptno
, b.dname
, c.locno
, c.lname
FROM emp a
RIGHT OUTER JOIN dept b
ON a.deptno = b.deptno
RIGHT OUTER JOIN loc c
ON b.locno = c.locno
WHERE b.deptno IN (10, 20, 30, 40)
emp 테이블, dept 테이블, loc 테이블을 RIGHT OUTER JOIN 하는 예제이다.
조인할 테이블이 여러 개인 경우 위의 예제처럼 순차적으로 RIGHT OUTER JOIN을 사용하여 작성하면 된다.
emp 테이블과 dept 테이블이 먼저 조인되고 dept 테이블이 기준 테이블이 된다. 그리고 dept 테이블과 loc 테이블이 조인되며 loc 테이블이 기준 테이블이 된다.
위의 예제는 기준 테이블이 계속 바뀌게 되어서 조금 복잡해 보인다. 실무에서 쿼리문을 작성할 때는 기준 테이블을 대부분 1개의 테이블이 되도록 작성하며, 위의 예제는 원리를 설명하기 위해 작성한 예시이니 이점을 인지하고 봐야 한다.