DB

[ORACLE][SQL] JOIN 종류

오선지♬ 2022. 1. 14. 11:15
728x90
반응형

scott계정의 emp 테이블
scott계정의 dept 테이블


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은 위의 셋의 결과를 다합친 결과라고 생각하면 편하다.

728x90
반응형

'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