[Oracle] 오라클 LEFT OUTER JOIN 사용법
- 데이터베이스/오라클
- 2023. 3. 6.
오라클에서 LEFT OUTER JOIN은 아우터 조인(외부조인)에서 가장 많이 사용하는 방법 중 하나이다. LEFT OUTER JOIN은 OUTER 키워드를 생략하고 LEFT JOIN으로 사용하기도 한다. 아우터 조인은 조인할 테이블에 데이터가 없어도 기준 테이블의 데이터는 모두 출력되는 조인 방법이다. LEFT OUTER JOIN은 ANSI JOIN 문법이며 오라클 10g 이상에서 사용할 수 있다. 일반적인 오라클 조인과 ANSI JOIN의 비교는 하단의 링크를 참고하면 된다.
목차 |
※ 예제의 emp 테이블은 설명을 위해 인위적으로 만든 테이블이며 하단의 첨부파일을 참고하면 된다.
LEFT OUTER JOIN - 기본 사용법
SELECT a.empno
, a.ename
, a.job
, a.deptno
, b.dname
FROM emp a
LEFT OUTER JOIN dept b
ON a.deptno = b.deptno
WHERE a.job IN ('PRESIDENT', 'MANAGER')
emp 테이블과 dept 테이블을 LEFT OUTER JOIN을 한 예제이다.
LEFT의 의미는 왼쪽 테이블을 기준 테이블로 지정한다는 의미이다. ( emp LEFT OUTER JOIN dept )
조인된 dept 테이블에 데이터가 있을 경우 부서명(b.name)을 표시하고 없으면 NULL을 표시한다.
dept 테이블에 존재하는 부서코드(deptno) 10,20, 30은 정상적으로 조인이 되며 부서명을 표시할 수 있다.
deptno = 90은 조인이 되지 않기 때문에 부서명을 표시할 수 없다.
아우터 조인은 조인할 테이블(dept)과 조인이 되지 않더라도 기준 테이블(emp)의 모든 데이터는 출력된다.
조인되지 않은 데이터는 조인 테이블의 데이터를 끌어와서 표시할 수 없다. (NULL로 표시)
LEFT OUTER JOIN은 OUTER 키워드를 생략하고 LEFT JOIN으로 사용해도 동일한 결과가 조회된다.
특수한 상황이 아니면 OUTER 키워드를 같이 사용하는 것이 좋다.
LEFT OUTER JOIN - 조인 칼럼이 여러 개인 경우
SELECT a.empno
, a.ename
, a.job
, a.deptno
, b.dname
, a.locno
FROM emp a
LEFT OUTER JOIN dept b
ON a.deptno = b.deptno
AND a.locno = b.locno
WHERE a.job IN ('PRESIDENT', 'MANAGER')
emp 테이블과 dept 테이블을 deptno, locno 두 개의 칼럼으로 LEFT OUTER JOIN 하는 예제이다.
조인 칼럼이 여러 개인 경우 AND를 순차적으로 사용하여 칼럼을 조인하면 된다.
deptno, locno 칼럼의 값이 동시에 일치할 경우 데이터를 표시하고, 일치하지 않으면 NULL을 표시하는 것을 확인할 수 있다.
LEFT OUTER JOIN - 조인 테이블이 여러 개인 경우
SELECT a.empno
, a.ename
, a.job
, a.deptno
, b.dname
, a.locno
, c.lname
FROM emp a
LEFT OUTER JOIN dept b
ON a.deptno = b.deptno
LEFT OUTER JOIN loc c
ON a.locno = c.locno
WHERE a.job IN ('PRESIDENT', 'MANAGER')
emp 테이블을 dept 테이블과 loc 테이블에 동시에 LEFT OUTER JOIN 하는 예제이다.
조인할 테이블이 여러 개인 경우 위의 예제처럼 순차적으로 LEFT OUTER JOIN을 사용하여 작성하면 된다.
기준 테이블(emp)이 dept 테이블과 조인이 되면 dname을 표시하고, loc 테이블과 조인이 되면 lname을 표시한다.
조인이 되지 않으면 NULL이 표시된다. 아우터 조인은 조인이 되지 않더라도 기준 테이블의 모든 데이터는 출력된다.