백엔드/DB

[MariaDB] MariaDB 학습 - 조인

tero1115 2023. 7. 10. 11:36

카티션 곱(cartesian product)

- 가능한 모든 행을 조인

-- 조인을 할 때 조건을 걸지 않으면 맞지 않는 데이터들이 연결 될 수 있다

select e.first_name , e.job_id as 직원직업아이디, j.job_id as 직업아이디
-- 조인을 할 때 조건을 걸지 않으면 맞지 않는 데이터들이 연결 될 수 있다
from employees as e join jobs as j
order by e.job_id ;

 

동등 조인(inner join)

- 조인 조건이 정확히 일치하는 경우에 결과를 출력

-- on은 조인 전용 where문이다

-- 직원의 first_name과 직업명을 출력하시오
select e.first_name as 이름,
		e.job_id as 직원직업아이디,
		j.job_id as 직업아이디,
		j.job_title as 직업명
from employees e
	inner join jobs j 
	-- on은 조인 전용 where문이다
	on e.job_id = j.job_id;

-- 직원의 first_name과 department_name을 출력하시오
select e.first_name as 이름,
		d.department_name
from employees e 
	inner join departments d 
	on e.department_id = d.department_id ;

 

외부조인(outer join)

- 조인 조건이 정확히 일치하지 않아도 모든 결과를 출력

-- 다 보여줄 테이블을 기준으로 outer join
-- employees 직원을 다 보여줘야하기 때문에 left

-- department_id가 null인 경우에도 출력하시오
select e.first_name as 이름,
		d.department_name
from employees e 
	-- 다 보여줄 테이블을 기준으로 outer join
	-- employees 직원을 다 보여줘야하기 때문에 left
	left outer join departments d 
	on e.department_id = d.department_id ;

자체조인 (self join)

- 자체 테이블에서 조인하고자 할 때 사용

-- 자체 조인
-- 직원의 first_name과 사수의 fir_name을 출력하시오
select e.first_name , e2.first_name 
from employees e 
	inner join employees e2
	on e.manager_id = e2.employee_id;

 

 

* 거의 대부분의 조인은 inner조인 (동등조인)을 사용한다.