1) INNER JOIN
2) LEFT OUTER JOIN
3) RIGHT OUTER JOIN
4) FULL OUTER JOIN
1) INNER JOIN
INNER JOIN은 두 테이블에서 교집합에 해당한다. 즉 두 테이블 모두에 존재하는 값만을 반환합니다. 매칭되는 행이 없으면 해당 행은 반환되지 않는다.
employees 테이블

departments 테이블

INNER JOIN 쿼리
SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.department_id;

2) LEFT OUTER JOIN
LEFT OUTER JOIN은 왼쪽 테이블의 모든 행을 반환하고, 오른쪽 테이블에서 일치하는 값이 없는 경우에는 NULL을 반환합니다.
LEFT OUTER JOIN쿼리
SELECT e.name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON e.department_id = d.department_id;
employees 테이블

departments 테이블


3) RIGHT OUTER JOIN
RIGHT OUTER JOIN은 오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블에서 일치하는 값이 없는 경우에는 NULL을 반환한다.
RIGHT OUTER JOIN 쿼리
SELECT e.name, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON e.department_id = d.department_id;
employees 테이블

departments 테이블


4) FULL OUTER JOIN
FULL OUTER JOIN은 두 테이블에서 모든 행을 반환합니다. 한쪽 테이블에 매칭되는 값이 없으면 NULL로 표시됩니다. MySQL에서는 FULL OUTER JOIN을 직접 지원하지 않으며, UNION(합집합)을 사용해서 대체할 수 있습니다.
SELECT e.name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON e.department_id = d.department_id
UNION
SELECT e.name, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON e.department_id = d.department_id;
