테이블 A
id | name
---------
1 | Kim
2 | Lee
3 | Park
테이블 B
id | email
-----------
1 | kim@email.com
2 | lee@email.com
4 | choi@email.com
<Inner join/>
- 두 테이블에서 조인 조건에 일치하는 데이터만 가져오는 방법
- 양쪽 테이블에서 모두 일치하는 데이터가 없으면 결과에 포함되지 않음
SELECT A.id, A.name, B.email
FROM tableA A
INNER JOIN tableB B ON A.id = B.id;
- 위 테이블 A, B를 기준으로 위와 같은 연산을 실행하면 아래와 같은 결과가 나옴
id | name | email
--------------------
1 | Kim | kim@email.com
2 | Lee | lee@email.com
<Outer join/>
- 두 테이블에서 조인 조건에 일치하지 않는 데이터도 결과에 포함시키는 방법
- Outer join은 Left outer join, Right outer join, Full outer join의 세 가지 유형이 있음
- Left outer join
- 테이블 A의 모든 데이터와 테이블 B의 일치하는 데이터를 가져옴
- 테이블 B에 일치하지 않는 데이터는 NULL로 표시됨
SELECT A.id, A.name, B.email
FROM tableA A
LEFT OUTER JOIN tableB B ON A.id = B.id;
id | name | email
--------------------
1 | Kim | kim@email.com
2 | Lee | lee@email.com
3 | Park | NULL
- Right outer join
- 테이블 B의 모든 데이터와 테이블 A의 일치하는 데이터를 가져옴
- 테이블 A에 일치하지 않는 데이터는 NULL로 표시됨
SELECT A.id, A.name, B.email
FROM tableA A
RIGHT OUTER JOIN tableB B ON A.id = B.id;
id | name | email
--------------------
1 | Kim | kim@email.com
2 | Lee | lee@email.com
4 | NULL | choi@email.com
- Full outer join
- 테이블 A와 테이블 B의 모든 데이터를 가져옴
- 서로 다른 테이블의 일치하지 않는 데이터는 NULL로 표시됨
SELECT COALESCE(A.id, B.id) as id, A.name, B.email
FROM tableA A
FULL OUTER JOIN tableB B ON A.id = B.id;
id | name | email
--------------------
1 | Kim | kim@email.com
2 | Lee | lee@email.com
3 | Park | NULL
4 | NULL | choi@email.com