👉 이런 경우 JOIN을 사용하면 테이블 간의 관계를 바탕으로 관련 데이터를 연결할 수 있습니다. (쉽게 말해서 여러 테이블을 합쳐서 나타내기 위해 필요합니다)
join에 알아보기 전 이해하기 쉽도록 사진을 하나 보고 가겠습니다. 혼공시리즈 라는 카페에 잘 정리된 사진이 있어서 가져왔습니다.

INNER JOIN의 경우 2개의 테이블에 공통으로 속한 데이터만 반환합니다.
만약 일치하지 않는다면 결과에서 제외됩니다.

-- join 쿼리문
SELECT *
from BOOK bk
JOIN (AUTHOR) au -- inner join이 아닌 join으로 축약해서 사용 가능
on bk.AUTHOR_ID = au.AUTHOR_ID; -- 두개의 테이블을 연결시킬 공통 key


-- 쿼리문
SELECT *
from BOOK bk
JOIN (select * from AUTHOR where author_id !=3) au
on bk.AUTHOR_ID = au.AUTHOR_ID;

-- 쿼리문
SELECT *
from BOOK bk
LEFT JOIN (select * from AUTHOR where author_id !=3) au
on bk.AUTHOR_ID = au.AUTHOR_ID;
아래의 사진처럼 왼쪽 테이블(BOOK)의 데이터를 먼저 나타내고, 오른쪽 테이블(AUTHOR)에 BOOK과 다른 데이터(id=3)인 부분은 null값으로 나타내게 됩니다.
따라서 한쪽 테이블의 데이터를 무조건 남기고 싶다면 inner join이 아닌 left join을 사용할 수 있습니다.

-- RIGHT JOIN 쿼리문
SELECT *
from (select * from AUTHOR where author_id !=3) au
RIGHT JOIN BOOK bk
on bk.AUTHOR_ID = au.AUTHOR_ID;

양쪽 테이블의 모든 데이터를 가져오고, 일치하지 않는 부분은 NULL로 채웁니다.
MY SQL의 경우 FULL OUTER JOIN을 지원하지 않습니다. 하지만 UNION을 사용하여 같은 기능을 하도록 흉내는 낼 수 있습니다.
아래의 2개의 테이블의 구성을 살펴보면

SELECT *
from (select * from AUTHOR where author_id !=3) au
FULL OUTER JOIN (select * from BOOK where author_id !=2) bk
on bk.AUTHOR_ID = au.AUTHOR_ID;
