SQL & DB/Oracle

[SQL] 조인(Join)

YSY^ 2020. 6. 9. 18:01

▶ 조인(JOIN) 이란

  • 2개 이상의 테이블에 있는 컬럼들을 합쳐서 가상의 테이블을 만들어 조회하는 방식을 말한다.
  • 소스테이블 : 내가 먼저 읽어야 한다고 생각하는 테이블
  • 타겟테이블 : 소스를 읽은 후 소스에 조인할 대상이 되는 테이블
  • 각 테이블을 어떻게 합칠지를 표현하는 것을 조인 연산이라고 한다.
  • 조인 연산에 따른 조인종류 : Equi join , non-equi join

 

조인의 종류

  • Inner Join 
    - 양쪽 테이블에서 조인 조건을 만족하는 행들만 합친다. 
  • Outer Join
    - 한쪽 테이블의 행들을 모두 사용하고 다른 쪽 테이블은 조인 조건을 만족하는 행만 합친다. 조인조건을 만족하는 행이 없는 경우 NULL을 합친다.
    - 종류 : Left Outer Join,  Right Outer Join, Full Outer Join
  • Cross Join
    - 두 테이블의 곱집합을 반환한다. 

 조인 문법
    - ANSI 조인 문법
        - 표준 SQL 문법
        - 오라클은 9i 부터 지원.
    - 오라클 조인 문법
        - 오라클 전용 문법이며 다른 DBMS는 지원하지 않는다.

 

  inner join : ANSI 조인 구문  

FROM  테이블a INNER JOIN 테이블b ON 조인조건  

 

- inner는 생략 할 수 있다.

 

ex)

select e.emp_id, e.hire_date, d.dept_name -- 양쪽에 다있는 애들은 앞에 e,d생략가능 but 조인할때는 해주는게 좋음! 
from emp e inner join dept d on e.dept_id = d.dept_id; --테이블 명에 별침주는 것 가능

 

 

▶ 오라클 조인 

  • Join할 테이블들을 from절에 나열한다.
  • Join 연산은 where절에 기술한다. 

ex)

select e.emp_id, e.emp_name, to_char(e.hire_date,'yyyy') as hire_date, d.dept_name 
from emp e, dept d
where e.dept_id = d.dept_id; 

 

▶ Self 조인
- 물리적으로 하나의 테이블을 두개의 테이블처럼 조인하는 것.

 

▶ 아우터 조인 (Outer Join)

  • 불충분 조인 (조인 연산시 한쪽의 행이 불충분 해도 붙이도록) 
  • 소스(완전해야하는테이블)가 왼쪽이면 left join, 오른쪽이면 right join 양쪽이면 full outer join
  • ANSI 문법
from 테이블a [LEFT | RIGHT | FULL] OUTER JOIN 테이블b ON 조인조건 

     - OUTER는 생략 가능.

  • 오라클 JOIN 문법
    - FROM 절에 조인할 테이블을 나열
    - WHERE 절에 조인 조건을 작성
        - 타겟 테이블에 (+) 를 붙인다.
        - FULL OUTER JOIN은 지원하지 않는다.
    - OUTER는 생략 할 수 있다.

ex)

select e.emp_id, e.emp_name, e.salary, d.dept_name, d.loc 
from emp e left join dept d on e.dept_id = d.dept_id 
where e.emp_id = 175 
order by d.dept_name desc;

 

728x90
반응형

'SQL & DB > Oracle' 카테고리의 다른 글

[SQL] DML / DDL  (0) 2020.06.10
[SQL] 서브쿼리(Sub Query), 집합연산자(결합쿼리)  (0) 2020.06.10
[SQL] 함수/집계함수(Having, Groupby)  (0) 2020.06.09
[SQL] Basic  (0) 2020.05.27