본문 바로가기
DataBase/mysql

Join 알아보기

by GGShin 2022. 6. 13.

관련이 있는 column(field)을 기준으로 여러 테이블의 정보를 결합하고 싶다면 Join query를 사용할 수 있습니다.

 

출처: shorturl.at/npuN9

Join에는 그림에 나오는 것처럼 다양한 종류가 있습니다. 

보통 Left join이나 Inner join이 자주 사용된다고 합니다.

 

Left Join 

Left Join한 table에 담긴 모든 정보 + join 하는 다른 테이블의 정보를 열람할 수 있습니다.

예를 들어서, 아래와 같이 이름이 담긴 customer 라는 table과

<Table> customer

이름과 가입 날짜가 적힌 dateOfJoin table이 있습니다. 

 

<Table> dateOfJoin

dateOfJoin table은 customer table에 기록된 손님들 중

dateOfJoin이 명시된 손님들의 이름과 가입 날짜를 데이터로 가지고 있습니다.

 

이런 경우에 customer table을 기준으로 dateOfJoin을 left join 하면 아래와 같은 결과가 나옵니다.

 

SELECT * FROM customer
//name이 두 테이블 모두 공통적으로 가지고 있는 column이므로 
//name을 indicator 삼아서 join
LEFT JOIN dateOfJoin ON dateOfJoin.name = customer.name;

Left Join

dateOfJoin에 데이터가 있는 Paul, Rola, Claire, Wayne은 dateOfJoin에 데이터가 들어가 있고 

나머지 name의 dateOfJoin은 Null로 할당되어 있습니다. 

 

앞서 이야기 한 것처럼 customer table의 모든 정보와 join 하는 테이블에 담긴 정보를 같이 볼 수 있게 되었습니다. 

 

Inner Join

Inner Join두 table 모두에 공통적인 데이터만 모아서 볼 수 있습니다.

customer와 dateOfJoin 두 테이블을 inner join 해보겠습니다.

 

SELECT * FROM customer
INNER JOIN dateOfJoin ON customer.name = dateOfJoin.name;

Inner Join

Inner Join을 하게되면 Left Join과는 다르게 두 테이블 모두에 공통적으로 들어있는 데이터만 나오게 됩니다. 

 

두 테이블의 데이터를 효과적으로 살펴보기에 좋은 기능인 것 같습니다.

반응형