[Oracle] inner ? outer ? + ?

INNER JOIN ?

  • 테이블을 연결할 때 사용함
  • 두 테이블에 조건이 모두 만족하는 결과만 연결지어서 나옴

예시 코드

SELECT *
FROM DEPT_INFO A
INNER JOIN DEPT_DATE B
ON A.EMPNO = B.EMPNO

OUTER JOIN

  • 테이블을 연결할 때 사용
  • 두 테이블에 조건이 모두 만족하지 않아도 됨 (만족하지 않으면 null 나옴)
  • left outer join , right outer join , full outer join 등 앞에 쓴 테이블 기준 , 뒤에 쓴 테이블 기준을 정할 수 있음

예시 코드

SELECT *
FROM DEPT_INFO A
-- left , right , full 모두 가능
LEFT OUTER JOIN DEPT_DATE B
ON A.EMP_NM = B.EMP_NM

어떤 경우에 inner ? outer ?

  • 무조건적으로 데이터가 맞는 경우만 보여줘야 함 , 데이터가 없으면 규칙이 안 맞는 경우 > inner
  • 데이터가 없더라도 화면에 보여줘야 하는 경우(없다는 걸 보여야 하는 경우) > outer

(+) ?

  • Oracle SQL 에서 쓰는 OUTER JOIN 방법
  • 일반적으로 inner outer 같은 ANSI를 많이 쓰지만 레거시나 상사의 입맛이 그러면 어쩔 수 없다 ...
  • 왼쪽에 붙이면 right , 오른쪽에 붙이면 left 이긴한데 정신없기 때문에 대부분 한쪽 방향이 붙이고 테이블 방향을 바꾼다
  • (+) 사용 시엔 모든 조건에 다 붙어야함 ;;

예시코드

SELECT *
FROM  DEPT_INFO A
    , DEPT_DATE B
WHERE    A.EMPNO = B.EMPNO(+)
     AND A.EMP_NM = B.EMP_NM(+)