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;
'Database' 카테고리의 다른 글
서브 쿼리 SUB QUERY (0) | 2022.05.30 |
---|---|
【JOIN】ANSI JOIN (CROSS/INNER/OUTER/SELF JOIN) (0) | 2022.05.30 |
【JOIN】키 KEY , 크로스 조인 CROSS JOIN , 이퀴조인 EQUI JOIN (0) | 2022.05.27 |
정렬 (0) | 2022.05.27 |
그룹함수 (GROUP BY, HAVING) 정리 (비공개) (0) | 2022.05.27 |