본문 바로가기

Database

【JOIN】아우터조인 OUTER JOIN (수정중)

OUTER JOIN 

교집합 이외의 부분까지 조회할 수 있는 조인

 

 

JOIN 은 원래  NULL을 표시하지 않음

그런데 OUTER JOIN 에서는 (+) 붙인 쪽의 NULL 데이터까지 모두 표시

 

ex. 

SELECT <셀렉리스트> 
FROM 토익점수테이블, 토스점수테이블
WHERE 토익점수테이블.학번 = 토스점수테이블.학번 (+);

토스 테이블의 NULL 값까지 포함시키기 때문에 토스 점수가 없고 토익점수만 있는 학생들의 정보도 표시됨

 

 

 

(+)를 붙이는 방식으로는 FULL OUTER JOIN을 할 수 없다. 

(합집합 조회 불가)

 

 

 

RIGHT OUTER JOIN 

 

SELECT first_name, email, emp.department_id, department_name

FROM employees emp, departments dept

WHERE emp.department_id = dept.department_id (+); 

107번에 부서가 비어 있는(NULL) 사람이 등장

 

 

 

LEFT OUTER JOIN

 

SELECT first_name, email, emp.department_id, department_name

FROM employees emp, departments dept

WHERE emp.department_id (+) = dept.department_id; 

사원이 한 명도 속해 있지 않기 때문에 등장할 수 없었던 부서가 나옴

 

 

 


 

 

연습문제 1 : 모든 사원들의 이름 / 매니저이름을 출력하되 매니저가 없는 사원도 함께 출력해보시오.

SELECT e.first_name, m.first_name

FROM employees e, employees m

WHERE e.mager_id = m.employee_id (+);

 

 

연습문제 2 : 부서명/부서번호/주소/도시명을 출력하되 소속된 부서가 없는 도시도 함께 출력

SELECT 

              department_name,

              department_id,

              street_address,

              city

FROM 

              departments d, locations l

WHERE 

              d.location_id (+) = l.location_id;

 

 

연습문제 3 : 소속된 부서가 없는 도시만 출력해보세요.

SELECT

              d.department_name, city, street_address

FROM 

              departments d, locations l

WHERE

              d.location_id (+) = l.location_id

              AND department_id IS NULL;