INNER JOIN(내부 조인)
◦조인이란 두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것을 말함.
◦INNER JOIN은 조인 중에서 가장 많이 사용되는 조인임.
- 일반적으로 JOIN이라고 얘기하는 것이 INNER JOIN을 지칭하는 것임.
SELECT 학.이름, 학.지역, 학동,동아리, 동아리방
FROM 학생테이블 학
JOIN 학생동아리테이블 학동
ON 학.이름 = 학.이름
JOIN 동아리테이블 동 ON 학동.동아리명 = 동.동아리명
동아리방 같은 경우는 동아리테이블에만 있는 독립적 테이블이다. 여러테이블 중복된 테이블이 아니기 때문에 앞에 별칭명. 혹은 테이블. 을 하지 않아도 되며 가능하다.
학.지역과 동아리방은 중복되지 않은 테이블이다. => 둘다 사용이 가능한데 별칭.명이 가동성을 위해서 권장하기도 한다.
예제)
--13. 부서 ID 가 50 이거나 80 인 부서에 근무하는 사원들의 직무 ID 와 직책(job_title)을 출력하시오.
--결과에서 직종(job_id)의 중복은 제거하시오 --5 건
SELECT DISTINCT job_id, job_title
FROM hr.employees e JOIN HR.jobs j using(job_id)
WHERE department_id IN(50,80);
--14. 사원의 사번, 관리자번호, 부서 ID, 부서명, 부서장 ID 를 출력하시오
SELECT employee_id, e.manager_id, e.department_id,
d.department_name, d.manager_id
FROM hr.employees e JOIN hr.departments d ON e.department_id = d.department_id;
--15. 성이 'Davies'인 사원의 부서 ID 와 급여를 출력하시오.
select e.department_id, salary
from hr.employees e JOIN hr.departments d ON e.department_id = d.department_id
where last_name = 'Davies'
--사원의 사번, 이름 , 부서번호, 부서명을 출력하시오
select employee_id, first_name, department_id, department_name
from HR.employees join HR.departments using(department_id);
OUTER JOIN(외부 조인)
OUTER JOIN은 조인의 조건에 만족되지 않는 행까지도 포함시키는 것임.
구문형식
예제)
--사원의 사번, 이름 , 부서번호, 부서명을 출력하시오
--부서없는 사원도 모두 출력한다.
select employee_id, first_name, department_id, department_name
from HR.employees left join HR.departments using(department_id);
--사원의 사번, 이름 , 부서번호, 부서명을 출력하시오
--사원없는 부서도 모두 출력
select employee_id, first_name, department_id, department_name
from HR.employees right join HR.departments using(department_id);
--사원의 사번, 이름 , 부서번호, 부서명을 출력하시오
--부서없는 사원, 사원없는 부서도 모두 출력
select employee_id, first_name, department_id, department_name
from HR.employees FULL join HR.departments using(department_id);
'DB' 카테고리의 다른 글
DDL,DML (0) | 2021.11.12 |
---|---|
서브쿼리 (0) | 2021.11.11 |
Oracle에서 지원하는 데이터 형식의 종류 (0) | 2021.11.10 |
논리 데이터 저장소 (데이터모델개념, (0) | 2021.11.05 |
데이터베이스 (0) | 2021.11.05 |