SQL/문법

[SQL 문법] Join의 종류

마이구미+ 2023. 8. 21. 21:19
테이블 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