1. INNER JOIN
- Inner join 은 교집합 연산과 같다.
- 양쪽 테이블에서 공통적으로 존재하는 데이터만 추출한다. (조인키 컬럼 값 기준)
ex) select * from emp e, dept d where e.deptno = d.deptno ;
2. LEFT OUTER JOIN
- Left outer join은 교집합 + (A-B) 의 연산과 같다
- Inner join 값 + 왼쪽 테이블에 존재하는 데이터 (조인키 컬럼 값 기준)
ex) select e.ename 사원, p.ename 관리자 from emp e, emp p where e.mgr = p.empno(+) ;
3. RIGHT OUTER JOIN
- Right outer join은 교집합 + (B-A) 의 연산과 같다.
- Inner join 값 + 오른쪽 테이블에 존재하는 데이터 (조인키 컬럼 값 기준)
ex) select e.comm 보너스 , p.sal 연봉 from emp e, emp p where e.empno(+) = p.empno ;
4. FULL OUTER JOIN
- Full outer join은 합집합의 연산과 같다.
- Inner join 값 + Left outer join 값 + Right outer join 값
ex) select e.ename 사원,e.comm 보너스 , p.ename 관리자, p.sal 연봉 from emp e full outer join emp p
on e.mgr = p.empno and e.empno = p.empno;
scott계정으로 설명하려다 보니 깔끔하지는 않지만 ..
inner join은 양쪽 다 공통적으로 겹치는 것의 결과
left outer join은 왼쪽테이블의 모든 데이터 (오른쪽 값이 null ) + inner join결과
right outer join은 오른쪽테이블의 모든 데이터 (왼쪽 값이 null ) + inner join결과
full outer join은 위의 셋의 결과를 다합친 결과라고 생각하면 편하다.
'DB' 카테고리의 다른 글
[ORACLE][SQL] DDL, DML, DCL 정리 (0) | 2022.02.12 |
---|---|
[MyBatis] 부등호 사용하기 - 비교 표현식 (0) | 2022.02.09 |
[Mybatis] 동적 SQL - <set>, <choose>,<where> (0) | 2022.02.08 |
[DB] ORM (0) | 2022.01.27 |
[ORACLE][SQL] DELETE, TRUNCATE, DROP 의 차이 (0) | 2022.01.12 |