[sql] JOIN과 데이터 병합

데이터베이스에서 여러 테이블에서 데이터를 검색하고 병합해야 할 때가 있습니다. SQL에서는 이를 위해 JOIN 연산을 제공합니다. JOIN은 관련있는 데이터가 있는 여러 테이블을 결합하여 하나의 결과 테이블로 만드는 데 사용됩니다.

INNER JOIN

INNER JOIN은 두 개 이상의 테이블에서 일치하는 행만 반환합니다. 예를 들어, employees 테이블과 departments 테이블이 있을 때, 이 두 테이블을 employee_id를 기준으로 INNER JOIN하여 각 부서에 속한 직원들의 정보를 가져올 수 있습니다.

SELECT employees.*, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

이 쿼리는 employees 테이블과 departments 테이블을 department_id를 기준으로 INNER JOIN하여 각 직원의 부서 정보를 가져옵니다.

LEFT JOIN

LEFT JOIN은 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 행을 반환합니다. 일치하는 행이 없는 경우에도 왼쪽 테이블의 데이터는 모두 반환되며, 오른쪽 테이블의 데이터가 없는 경우 NULL로 채워집니다.

SELECT employees.*, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;

위의 쿼리는 employees 테이블과 departments 테이블을 department_id를 기준으로 LEFT JOIN하여 모든 직원의 정보와 그에 해당하는 부서 정보를 가져옵니다.

RIGHT JOIN

RIGHT JOIN은 LEFT JOIN과 반대로 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 일치하는 행을 반환합니다. 즉, 왼쪽 테이블의 데이터가 없는 경우에도 오른쪽 테이블의 데이터는 모두 반환되며, 왼쪽 테이블의 데이터가 없는 경우 NULL로 채워집니다.

SELECT employees.*, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id;

위의 쿼리는 employees 테이블과 departments 테이블을 department_id를 기준으로 RIGHT JOIN하여 모든 부서 정보와 그에 해당하는 직원 정보를 가져옵니다.

Conclusion

JOIN 연산을 사용하여 여러 테이블에서 필요한 데이터를 효과적으로 병합할 수 있습니다. INNER JOIN, LEFT JOIN, RIGHT JOIN을 적절히 활용하여 데이터를 검색하고 병합하면서 데이터베이스에서 원하는 정보를 쉽게 가져올 수 있습니다.

참고 자료