글 개요
이번 포스팅은 두개 이상의 테이블을 결합하는 것을 사용해보겠습니다.
글 본문
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
두개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인방식입니다.
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
두 개의 테이블에서 공토된 영역을 포함하여 오른쪽 테이블의 다른 데이터를 포함하는 조인방식입니다.
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 |
댓글