본문 바로가기
SQL

MYSQL- inner join, right join left join full outer join 사용하기

by 앵남(Andy) 2021. 11. 9.

글 개요

이번 포스팅은 두개 이상의 테이블을 결합하는 것을 사용해보겠습니다. 

글 본문

INNER JOIN

교집합

두개의 테이블에서 공통된 요소들을 통해 결합하는 조인 방식입니다. 

SELECT COLUMN1, COLUMN2
FROM tableA
inner join tableB
on tableA.column = tableB.column
where condition;

 

예제

snl show host로 출연한 적인 celab데이터를 가져오려면 

select * from celab
inner join snl_show
on celab.name = snl_show.host;

 

LEFT JOIN

두개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인방식입니다.

LEFT JOIN

SELECT COLUMN1, COLUMN2
FROM tableA
left join tableB
on tableA.column = tableB.column
where condition

왼쪽이 celab 테이블 이고 오른쪽이 snl show 테이블 입니다. left쪽인은 tableA쪽에서 공통되지 않은 부분까지 가져오는걸 볼 수 있습니다.  위 테이블을 해석해보면 snl show에 출연한 사람은 강동원 차승원 이수현님 이고, 아이유 이미지, 송강님은 출연한 적이 없습니다. 왜냐면 snl show 테이블에는 아이유, 이미주, 송강님이 없기 때문입니다. 

 

 

RIGHT JOIN

두 개의 테이블에서 공토된 영역을 포함하여 오른쪽 테이블의 다른 데이터를 포함하는 조인방식입니다.

RIGHT JOIN

SELECT COLUMN1, COLUMN2...
FROM tableA
RIGHT JOIN tableB
on tableA.column = tableB.column
where condition;

 

테이블 왼쪽은 celab table 데이터고 오른쪽 은 snl_show 테이블입니다. right join을 했으니 왼쪽데이터에서는 공통된 데이터를 가져오고 오른쪽 데이터는 공통된 부분과 공통되지 않은 부분의 데이터를 다 가져옵니다. 

 

FULL OUTER JOIN

full outer join은 tableA, tableB데이터를 다 가져옵니다.  하지만, mysql은 full outer join을 해주는 기능이 없습니다. 하지만, union을 이용하면 full outer join을 만들 수 있습니다.

select tableA.column1, tableA.column2, tableA.column3 ...
from tableA
left outer tableB
on tableA.column = tableB.column
union
select tableA.column1, tableA.column2, tableB.column3 ....
from tableA
right outer tableB
on tableA.column = tableB.column

이렇게 union을 이용하면 full outer join을 구현할 수있습니다. 

'SQL' 카테고리의 다른 글

MYSQL- group by 과 having 사용하기  (0) 2021.11.09
MYSQL- is null or is not null 사용하기  (0) 2021.11.09
MYSQL- UNION 문법  (0) 2021.11.09
MYSQL- LIKE 문법  (0) 2021.11.09
MYSQL- IN연산자  (0) 2021.11.09

댓글