Mysql

[Join 알아보기] Inner Join, Right Join, Left Join

하루인생 2021. 4. 1. 22:38

Join을 알아보기 위해서 예제 테이블을 생성했다.

create table soccer (
	ch int,
    team varchar(50)
);

 desc soccer;
create table baseball (
	ch int,
    team varchar(50)
);

그리고 데이트를 조금 넣어봤다.

 

insert into soccer values(33,'서울 축구');
insert into soccer values(34,'부산 축구');
insert into soccer values(35,'경주 축구');
insert into soccer values(35,'용인 축구');
insert into soccer values(35,'광주 축구');
insert into soccer values(35,'대구 축구');
insert into soccer values(55,'전주 축구');

insert into baseball values(33,'서울 야구');
insert into baseball values(34,'부산 야구');
insert into baseball values(42,'전북 야구');
insert into baseball values(35,'울산 야구');
insert into baseball values(33,'제주 야구');
insert into baseball values(53,'광주 야구');

이제 조인에 대해 알아보자.

 

조인의 형식은 아래와 같다.

on은 where와 같은 의미이다.

select a.*, b.* 
from 테이블A a 
[inner/ right/ left..] join 테이블B b
on a.id = b.id

 Inner Join

예제를 보면 이해하기가 쉽다.

Inner 말 그대로 내부라는 의미로 두 테이블의 공통된 부분을 가져온다.

select s.ch, s.team
from soccer s
inner join baseball b
on s.ch = b.ch;

 

실행한 결과는 다음과 같다. 두 테이블에서 ch가 같은 항목에 해당하는 내용을 가져왔다. 

 

 

 Left Join

Left join은 Join을 기준으로 왼쪽에 있는 테이블을 기준으로 두 테이블을 합친다.

즉, 아래 코드에서는 soccer가 기준이 되고 baseball테이블과 합치게 된다.

따라서 baseball테이블에 null이 있어도 가져오게 된다.

select s.ch, s.team, b.ch, b.team
from soccer s
left join baseball b
on s.ch = b.ch;

 

 

 Right Join

 

Right join은 Join을 기준으로 오른쪽에 있는 테이블을 기준으로 두 테이블을 합친다.

Left Join과 반대 방향이라고 생각하면 된다.

baseball을 기준으로 합쳐진 것을 볼 수 있다.

select s.ch, s.team, b.ch, b.team
from soccer s
right join baseball b
on s.ch = b.ch;