Database

INNER JOIN, LEFT JOIN, RIGHT JOIN의 차이

쿠카이든 2022. 7. 17. 16:27
728x90
예제 테이블
mysql> select * from demo_people;

 

name phone  pid 
 Mr brown  01225 708225  1
 Miss Smith  01225 899360  2
 Mr Pullen  01380 724040  3

 

mysql> select * from demo_property;

 

pid spid selling 
 1  1  Old House Fram
 3  2  The Willows
 3  3  Tali Trees
 3  4  the Melksham Florist
 4  5  Dun Roamin

 

1. 기본 JOIN (= INNER JOIN)

  - 기본적으로 JOIN은 교집합이다.

select name, phone, selling 
  from demo_people 
  join demo_property 
    on demo_people.pid = demo_property.pid;

+-----------+  | name | phone | selling | +-----------+

| Mr Brown | 01225 708225 | Old House Farm |

| Mr Pullen | 01380 724040 | The Willows |

| Mr Pullen | 01380 724040 | Tall Trees |

| Mr Pullen | 01380 724040 | The Melksham Florist |

+-------------+--------------+----------------------+

 

2. LEFT JOIN
  •  왼쪽 테이블을 중심으로 오른쪽의 테이블을 매치시킨다.
  •  왼쪽 테이블의 한개의 레코드에 여러개의 오른쪽 테이블 레코드가 일치할 경우, 해당 왼쪽 레코드를 여러번 표시하게 된다.
  •  왼쪽은 무조건 표시하고, 매치되는 레코드가 오른쪽에 없으면 NULL을 표시한다.
select name, phone, selling 
  from demo_people 
  left join demo_property 
    on demo_people.pid = demo_property.pid;

 +------------+--------------+----------------------+ | name | phone | selling | +------------+--------------+----------------------+

| Mr Brown | 01225 708225 | Old House Farm |

| Miss Smith | 01225 899360 | NULL |

| Mr Pullen | 01380 724040 | The Willows |

| Mr Pullen | 01380 724040 | Tall Trees |

| Mr Pullen | 01380 724040 | The Melksham Florist |

+------------+--------------+----------------------+

 

3. RIGHT JOIN
  •  오른쪽 테이블을 중심으로 왼쪽 테이블을 매치시킨다.
  •  LEFT JOIN에서 방향을 오른쪽으로만 바꾼것이므로, 역시 해당 레코드가 여러번 표시되거나, NULL이 표시된다.
select name, phone, selling 
  from demo_people 
 right join demo_property 
    on demo_people.pid = demo_property.pid;

+-----------+--------------+----------------------+ | name | phone | selling | +-----------+--------------+----------------------+

| Mr Brown | 01225 708225 | Old House Farm |

| Mr Pullen | 01380 724040 | The Willows |

| Mr Pullen | 01380 724040 | Tall Trees |

| Mr Pullen | 01380 724040 | The Melksham Florist |

| NULL | NULL | Dun Roamin |

+-----------+--------------+----------------------+

 

4. OUTER JOIN : 조건에 부합하지 않는 행까지도 포함시켜 결합하는 것

 - 기본적으로 LEFT, RIGHT 또는 FULL이 OUTER JOIN 이다.

 - FULL JOIN 은 사용할 일이 없으며, ODBC에 따라 지원하지 않는 경우도 있다.

 

출처: https://superman28.tistory.com/23

 

JOIN 완전 정리 (INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN)

예제 테이블 mysql> select * from demo_people; name phone pid  Mr brown  01225 708225  1  Miss Smith  01225 899360  2  Mr Pullen  01380 724040  3 mysql> select * from demo_property; pid spi..

superman28.tistory.com

 

728x90