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(+)