<조인 (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 |