최말짱 블로그

Inner Join과 Outer Join 본문

카테고리 없음

Inner Join과 Outer Join

최말짱 2022. 7. 10. 17:21
728x90

Inner Join(동일 조인)

Inner Join은 교집합 이라고 할 수 있다. 

 

table_A

ID name
c001 amy
c002 yuna

table_B

ID emp_no from_date
c001 1010 2000-01-01
d001 1011 2010-01-05

 

SELECT a.id, a.name, b.emp_no, b.from_date
FROM table_A as a INNER JOIN table_B as b ON a.id = b.id;

 

Inner Join 결과

ID name emp_no from_date
c001 amy 1010 2000-01-01

table_A와 table_B에 id가 같은 data만 join되어 출력된다 ! (교집합)

table_A와 table_B에 조인컬럼에 해당하는 값이 모두 존재해야 출력된다. -> table_A와 table_B에 id가 같은 값이 존재하지 않을 경우 출력X

 

 

 

Outer Join(외부 조인)

Outer Join은 집합 이라고 할 수 있다.

 

Outer Join은 Left Outer Join, Right Outer Join, Full Outer Join 세 가지 종류로 나누어 진다. 

 

1) Left Outer Join

table_A

ID name
c001 amy
c002 yuna

table_B

ID emp_no from_date
c001 1010 2000-01-01
d001 1011 2010-01-05

 

SELECT a.id, a.name, b.emp_no, b.from_date
FROM table_A as a LEFT OUTER JOIN table_B as b ON a.id = b.id

 

Left Outer Join 결과

ID name emp_no from_date
c001 amy 1010 2000-01-01
c002 yuna null null

table_A를 기준으로 table_B에 id가 같은 data가 있으면 붙어서 join되어 출력된다 ! (합집합)

table_A와 table_B에 조인컬럼에 해당하는 값이 모두 존재하지 않아도 출력된다. -> table_A와 table_B에 id가 같은 값이 존재하지 않을 경우 null로 채워짐

 

즉, Left(table_A)에 있는 outer를 포함하는 것을 말한다. -> Right Outer Join은 Right(table_B)에 있는 outer를 포함.

 

2) Right Outer Join

Righter Outer Join은 Left Outer Join의 반대이다. 

즉, 오른쪽 table에 있는 outer를 포함하게 됨. ! 

 

SELECT a.id, a.name, b.emp_no, b.from_date
FROM table_A as a RIGHT OUTER JOIN table_B as b ON a.id = b.id

 

Right Outer Join 결과

ID name emp_no from_date
c001 amy 1010 2000-01-01
d001 null 1011 2010-01-05

 

3) Full Outer Join

 

table_A와 table_B 있는 모든 outer를 포함하는 Join

left outer join과 right outer join의 합집합이라고 할 수 있다. 

SELECT a.id, a.name, b.emp_no, b.from_date
FROM table_A as a FULL OUTER JOIN table_B as b ON a.id = b.id

 

Full Outer Join 결과

ID name emp_no from_date
c001 amy 1010 2000-01-01
c002 yuna null null
d001 null 1011 2010-01-05