select * from test1
union
select * from test2
INNER JOIN
두 개의 테이블에서 공통되 ㄴ요소들을 통해 결합하는 조인방식(교집합)
select celeb.id, celeb.name, snl_show.id, snl_show.host
from celeb inner join snl_show
on celeb.name = snl_show.host;
+----+-----------+----+-----------+
| id | name | id | host |
+----+-----------+----+-----------+
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
+----+-----------+----+-----------+
LEFT JOIN
두 개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인 방식
select celeb.id, celeb.name, snl_show.id, snl_show.host
from celeb left join snl_show
on celeb.name = snl_show.host;
+----+-----------+------+-----------+
| id | name | id | host |
+----+-----------+------+-----------+
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
| 1 | 아이유 | NULL | NULL |
| 2 | 이미주 | NULL | NULL |
| 3 | 송강 | NULL | NULL |
+----+-----------+------+-----------+
RIFHT JOIN
두 개의 테이블에서 공통영역을 포함해 오른쪽 테이블의 다른 데이터를 포함하는 조인 방식
select celeb.id, celeb.name, snl_show.id, snl_show.host
from celeb right join snl_show
on celeb.name = snl_show.host;
+------+-----------+----+-----------+
| id | name | id | host |
+------+-----------+----+-----------+
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
| NULL | NULL | 5 | 이병헌 |
| NULL | NULL | 6 | 하지원 |
| NULL | NULL | 7 | 제시 |
| NULL | NULL | 8 | 조정석 |
| NULL | NULL | 9 | 조여정 |
| NULL | NULL | 10 | 옥주현 |
+------+-----------+----+-----------+
FULL OUTER JOIN
두 개의 테이브에서 공통영역을 포함하여 양쪽 테이블의 다른 영역을 모두 포함하는 조인방식(합집합)
MySQL 에서는 FULL JOIN을 지원하고 있지 않기 때문에 LEFT JOIN과 RIGHT JOIN을 UNION하는 식으로 구현해야한다.
select celeb.id, celeb.name, snl_show.id, snl_show.host
from celeb left join snl_show
on celeb.name = snl_show.host
union
select celeb.id, celeb.name, snl_show.id, snl_show.host
from celeb right join snl_show
on celeb.name = snl_show.host;
+------+-----------+------+-----------+
| id | name | id | host |
+------+-----------+------+-----------+
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
| 1 | 아이유 | NULL | NULL |
| 2 | 이미주 | NULL | NULL |
| 3 | 송강 | NULL | NULL |
| NULL | NULL | 5 | 이병헌 |
| NULL | NULL | 6 | 하지원 |
| NULL | NULL | 7 | 제시 |
| NULL | NULL | 8 | 조정석 |
| NULL | NULL | 9 | 조여정 |
| NULL | NULL | 10 | 옥주현 |
+------+-----------+------+-----------+
SELF JOIN
select celeb.id, celeb.name, snl_show.id, snl_show.host
from celeb, snl_show
where celeb.name=snl_show.host and celeb.agency='안테나';
+----+-----------+----+-----------+
| id | name | id | host |
+----+-----------+----+-----------+
| 5 | 유재석 | 2 | 유재석 |
+----+-----------+----+-----------+
self join에서 가장 중요한 것은 "찾으려는 데이터의 조건이 무엇이냐" 를 파악하는 것이다. 예제나 실습 모두 뭘 찾으라는 건지 잘못이해해서 헤맸다. 문해력이 중요한 시대이다. 책좀 읽어라!