최보름달
[SQL] OUTER JOIN (LEFT, RIGHT, FULL) 본문
OUTER JOIN
INNER(내부) JOIN 과 대비해서 OUTER(외부) JOIN 이라고 불린다.
JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용할 수 있다.
LEFT OUTER JOIN
좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중에 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어온다.
우측 테이블에 값이 없다면 NULL로 표시한다.
LEFT JOIN 으로 OUTER 키워드를 생략해서 사용할 수 있다.
STADIUM에 등록된 운동장 중 홈팀이 없는 경기장도 있다. 홈팀이 없는 경기장도 확인할 수 있게 출력하는 예시
SELECT S.NAME, S.STADIUM_ID, SEAT_COUNT, HOMETEAM_ID, TEAM_NAME
FROM STADIUM S LEFT OUTER JOIN TEAM T
ON S.HOMETEAM_ID = T.TEAM_ID
ORDER BY HOMETEAM_ID ;
RIGHT OUTER JOIN
LEFT JOIN과 반대로, 우측 테이블이 기준이 되어 결과를 생성한다.
왼쪽 테이블에 값이 없는 경우 NULL 로 표시한다.
RIGHT JOIN 으로 OUTER 를 생략할 수 있다.
사원이 없는 부서도 있다. 이 경우도 나오도록 출력하는 예시
SELECT E.ENAME, D.DEPTNO, D.DNAME, D.LOC
FROM EMP E RIGHT OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO ;
FULL OUTER JOIN
조인 수행 시 좌측, 우측 테이블 모든 데이터를 읽어 JOIN 하여 결과를 생성한다.
합집합 개념.
OUTER 는 생략 가능하다.
SELECT E.ENAME, D.DEPTNO, D.DNAME, D.LOC
FROM EMP E FULL OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO ;
INNER vs OUTER vs CROSS JOIN 비교
1) INNER JOIN 은 2건이 출력된다. (교집합)
2) LEFT OUTER JOIN 은 왼쪽이 4개 행이 있으니까, 4건이 출력된다. D, E 행의 우측에는 NULL 이 붙는다.
3) RIGHT OUTER JOIN 오른쪽이 3개 행이 있으니까, 3건 출력된다. A왼쪽에는 NULL이 붙는다.
4) FULL OUTER JOIN 은 5건이 출력된다. (합집합)
5) CROSS JOIN 은 12건이 출력된다. (왼쪽 4개 행 * 오른쪽 3개 행)
kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다.
'문송한 회사생활 > SQL 공부' 카테고리의 다른 글
[SQL] 오라클 계층형 질의 (Hierarchical Query) (0) | 2020.08.16 |
---|---|
[SQL] 집합 연산자 (UNION, UNION ALL, INTERSECT, EXCEPT, MINUS) (0) | 2020.08.15 |
[SQL] CROSS JOIN (0) | 2020.08.15 |
[SQL] USING, ON 조건절 (0) | 2020.08.15 |
[SQL] INNER JOIN, NATURAL JOIN (0) | 2020.08.15 |