관련이 있는 column(field)을 기준으로 여러 테이블의 정보를 결합하고 싶다면 Join query를 사용할 수 있습니다.
Join에는 그림에 나오는 것처럼 다양한 종류가 있습니다.
보통 Left join이나 Inner join이 자주 사용된다고 합니다.
Left Join
Left Join은 한 table에 담긴 모든 정보 + join 하는 다른 테이블의 정보를 열람할 수 있습니다.
예를 들어서, 아래와 같이 이름이 담긴 customer 라는 table과
이름과 가입 날짜가 적힌 dateOfJoin table이 있습니다.
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;
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을 하게되면 Left Join과는 다르게 두 테이블 모두에 공통적으로 들어있는 데이터만 나오게 됩니다.
두 테이블의 데이터를 효과적으로 살펴보기에 좋은 기능인 것 같습니다.
'DataBase > mysql' 카테고리의 다른 글
Spring 사용 시 DB를 H2에서 MySQL로 변경하기(JPA사용) (0) | 2022.08.31 |
---|---|
Primary key & Foreign key 설정하기 (0) | 2022.06.12 |
맥 터미널로 mysql 사용하기 (0) | 2022.06.12 |