조인(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 |