조인(Join)
  • 등가조인

    : 조인기준 컬럼의 값이 같을 조건으로조인

 

select 이름, 부서이름

from 사원테이블 natural join 부서테이블

 

select 이름, 부서이름

from 사원테이블 join 부서테이블

using(부서번호)   -> 조인할 컬럼을 지정

 

select 이름,부서이름

from 사원테이블 e join 부서테이블 d

on e.부서번호 = d.부서번호

where 부서번호 = 10

 

 

 

  • Outer Join(포괄조인)

     조인 조건을 만족하지 않는 행을 같이 보여줌

     Left outer join : 왼쪽 테이블의 만족하지 않는 행을 같이 보여줘라

#left join
select 이름,부서이름

from 사원테이블 e left outer join 부서테이블 d

on e.부서번호 = d.부서번호

     

     Right outer join : 오른쪽 테이블의 만족하지 않는 행을 같이 보여줘라

#right join

select 이름,부서이름

from 사원테이블 e right outer join 부서테이블 d

on e.부서번호 = d.부서번호

 

     full join (sql에서는 제공 안해서 합집합으로)

#full outer join
select 이름,부서이름

from 사원테이블 e left outer join 부서테이블 d

on e.부서번호 = d.부서번호

union

select 이름,부서이름

from 사원테이블 e right outer join 부서테이블 d

on e.부서번호 = d.부서번호

 

  • self join

     자기 자신을 조인 -> 테이블 별칭 꼭 사용해야 함

     ex) 사번이 175번인 사람의 매니저 이름이 무엇인가?

select e.이름, m.이름
from 사원테이블 e join 사원테이블 m
on e.manager_id = m.사번
where e.사번= 175

 

  • 비등가조인

     : 등가(=)가 아닌 조건으로 조인

create table job_grades(
gra char(1) primary key,
lowest_sal int ,
highest_sal int
);

insert into job_grades values('A', 1000, 2999);
insert into job_grades values('B', 3000, 5999);
insert into job_grades values('C', 6000, 9999);
insert into job_grades values('D', 10000, 14999);
insert into job_grades values('E', 15000, 24999);
insert into job_grades values('F', 25000, 40000);
desc job_grades;

select * from job_grades;
select employee_id, last_name, salary, gra
from employees e join job_grades j
on e.salary between j.lowest_sal and j.highest_sal;

'MySQL은 좀 낫다면서요' 카테고리의 다른 글

MySQL #Ch6.서브쿼리 : 연습문제  (0) 2021.06.17
MySQL #함수  (0) 2021.06.17
MySQL #Ch5.함수 : 연습문제  (0) 2021.06.17
MySQL #CH4. Join : 연습문제  (0) 2021.06.16
MySQL #CH2. Select : 연습문제  (0) 2021.06.15

+ Recent posts