본문 바로가기

Learning/SQL

조인 (JOIN) - 외부조인

<조인 (JOIN) - 외부조인>

 

  • 외부조인(OUTER JOIN): 조인 조건에 일치하지 않는 데이터까지 모두 출력. 부족한 데이터는 자동으로 NULL값으로 설정됨

 

  • 앞쪽에 먼저 기술한 테이블을 왼쪽 테이블, 뒤쪽 테이블을 오른쪽 테이블로 간주. (FROM 뒤에 오는 테이블이 왼쪽 테이블, JOIN뒤에 오는 테이블이 오른쪽 테이블)

 

    • LEFT: 왼쪽 테이블의 데이터는 모두 검색에 포함

    • RIGHT: 오른쪽 테이블의 데이터는 모두 검색에 포함

    • FULL: 양쪽 테이블 모두의 데이터가 검색에 포함

 


 

  • LEFT

  • employees 테이블과 departments 테이블을 LEFT JOIN하여 last_name, department_id, department_name 을 각각 직원, 부서번호, 부서명 이름으로 출력

1
2
3
4
5
SELECT e.last_name 직원, e.department_id 부서번호,
    d.department_name 부서명
FROM employees e
LEFT OUTER JOIN departments d
    ON e.department_id=d.department_id;
cs

 

=> employees테이블 기준으로 왼쪽 (employees 테이블) 107개의 행이 보여짐 (NULL포함)

 

 

 


 

  • RIGHT

  • employees 테이블과 departments 테이블을 RIGHT JOIN하여 last_name, department_id, department_name 을 각각 직원, 부서번호, 부서명 이름으로 출력

1
2
3
4
5
SELECT e.last_name 직원, e.department_id 부서번호,
    d.department_name 부서명
FROM employees e
RIGHT OUTER JOIN departments d
    ON e.department_id=d.department_id;
cs

 

=> employees테이블 기준으로 오른쪽 (departments테이블) 122개의 행이 보여짐 (NULL포함)

 

 


 

  • FULL

  • mployees 테이블과 departments 테이블을 FULL JOIN하여 last_name, department_id, department_name 을 각각 직원, 부서번호, 부서명 이름으로 출력

 

1
2
3
4
5
SELECT e.last_name 직원, e.department_id 부서번호,
    d.department_name 부서명
FROM employees e
FULL OUTER JOIN departments d
    ON e.department_id=d.department_id;
cs

 

=> 양쪽의 테이블 모든 행이 보여짐 

 

 


 

 

<외부조인 예제>

 

  • countries, locations 테이블을 조인하여 country_name 국가, country_id 국가번호, location_id 지역번호, city 도시를 출력. countries의 테이블의 데이터는 모두 검색에 포함시키도록한다. (지역번호로 DESC정렬)

1
2
3
4
5
6
SELECT c.country_name 국가, c.country_id 국가번호,
    lo.location_id 지역번호, lo.city 도시
FROM countries c
LEFT OUTER JOIN locations lo
    ON c.country_id=lo.country_id
ORDER BY 지역번호 DESC;
cs

 

 

 

'Learning > SQL' 카테고리의 다른 글

조인 (JOIN) - 리뷰 및 예제  (0) 2020.06.18
조인 (JOIN) - 교차조인  (0) 2020.06.18
조인 (JOIN) - 자체 조인 (Self Join)  (0) 2020.06.17
조인 (JOIN) - 비 동등조인  (0) 2020.06.17
조인 (JOIN) - 동등조인  (0) 2020.06.17