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;