가장 기본적인 조인 방신
조인 참여 테이블 간 조인 컬럼 값이 같은 건만 가져옴
실습1 : 2개 테이블 조인
SELECT a.employee_id --모든 컬럼은 테이블명.컬럼명
, a.first_name --혹은 Alias명.컬럼명 형태로 사용
, a.last_name
, a.department_id
, b.department_name
FROM employees a --FROM절에 조인에 참여할 테이블 명시(콤마로 구분)
, departments b --각 테이블에 Alias(별칭) 주는 것이 좋음
WHERE a.department_id = b.department_id
--WHERE절에서 조인조건과 일반조건 함께 사용 가능
ORDER BY 1 ;
※178번 사원이 빠져 있음
-> 사번이 178번의 department_id 값이 NULL이여서 조회되지 않음
SELECT a.employee_id
, a.department_id
, b.departmnet_name
FROM employees a
INNER JOIN deparments b
on a.department_id = b.department_id
ORDER BY a.department_id ;
-- INNER 생략 가능
SELECT a.employee_id
, a.department_id
, b.departmnet_name
FROM employees a
LEFT OUTER JOIN deparments b
on a.department_id = b.department_id
ORDER BY a.department_id ;
-- OUTER 생략 가능
SELECT a.employee_id
, a.department_id
, b.departmnet_name
FROM employees a
FULL OUTER JOIN deparments b
on a.department_id = b.department_id
ORDER BY a.department_id ;
-- OUTER 생략 가능
내부조인의 경우 일반 조인이(WHERE 절에 조인조건 기술) 가독성 측면에서 좋음
외부조인
-> (+) 는 오라클에서만 사용 가능
-> ANSI 가 가독성이 더 좋음
-> FULL OUTER JOIN은 ANSI 문법만 가능
SELECT a.employee_id
, a.first_name || ' ' || a.last_name
, a.manager_id
,b.first_name || ' ' || b.last_name
FROM employees a
INNER JOIN emplyees b
ON a.manager_id = b.employee_id
ORDER BY 1 ;