책 내용 질문하기
외부조인 질문
도서
2027 한 권으로 끝내는 시나공 SQLD + 시험장에 들고 가는 킬러 문항 32제
페이지
161
조회수
102
작성일
2026-08-09
작성자
진*
첨부파일

emp 테이블 emp_no 105의 dept_id는 null, dept 테이블에서 dept_id가 30은 기획부인데요.

where e.dept_id = dept_id(+)

dept_id가 같은 행만 출력되는 것으로 보는데요.

결과는 dept_id가 같지 않은 (30, null) 105 행까지 출력됩니다.

이유가 왜 그런가요?

조인에서 where절에 있는 = 은 등호의 의미가 아닌가요?

답변
2026-08-11 15:48:24

안녕하세요. 좋은 질문 감사합니다.

결론부터 말씀드리면, (+) 기호가 붙어 있기 때문에 이 조건은 단순 등호 조인이 아니라 OUTER JOIN으로 동작합니다.


WHERE e.dept_id = dept_id(+)는 오라클 전통 조인 방식의 OUTER JOIN 표기입니다.

여기서 핵심은 (+) 기호가 없는 쪽이 기준 테이블이 된다는 점입니다. 즉 (+)가 붙지 않은 EMP 테이블이 기준이 되며,

EMP의 모든 행은 조인 성공 여부와 관계없이 출력됩니다.


그래서 emp_no 105(dept_id가 NULL)처럼 DEPT 테이블과 매칭되는 부서가 없는 행이라도,

기준 테이블인 EMP에 속해 있으므로 결과에 그대로 출력되는 것입니다. 이때 DEPT 쪽 컬럼은 채울 값이 없으므로 NULL로 표시됩니다.

  • 관리자
    2026-08-11 15:48:24

    안녕하세요. 좋은 질문 감사합니다.

    결론부터 말씀드리면, (+) 기호가 붙어 있기 때문에 이 조건은 단순 등호 조인이 아니라 OUTER JOIN으로 동작합니다.


    WHERE e.dept_id = dept_id(+)는 오라클 전통 조인 방식의 OUTER JOIN 표기입니다.

    여기서 핵심은 (+) 기호가 없는 쪽이 기준 테이블이 된다는 점입니다. 즉 (+)가 붙지 않은 EMP 테이블이 기준이 되며,

    EMP의 모든 행은 조인 성공 여부와 관계없이 출력됩니다.


    그래서 emp_no 105(dept_id가 NULL)처럼 DEPT 테이블과 매칭되는 부서가 없는 행이라도,

    기준 테이블인 EMP에 속해 있으므로 결과에 그대로 출력되는 것입니다. 이때 DEPT 쪽 컬럼은 채울 값이 없으므로 NULL로 표시됩니다.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.