INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN 등의 조인 활용 (Using INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN)
INNER JOIN
INNER JOIN은 두 테이블 간에 일치하는 레코드만 반환합니다.
SELECT a.column1, b.column2 FROM table_a a INNER JOIN table_b b ON a.common_column = b.common_column;
예제:
SELECT employees.first_name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.department_id;
LEFT JOIN
LEFT JOIN은 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환합니다. 일치하는 레코드가 없는 경우 NULL을 반환합니다.
SELECT a.column1, b.column2 FROM table_a a LEFT JOIN table_b b ON a.common_column = b.common_column;
예제:
SELECT employees.first_name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id;
RIGHT JOIN
RIGHT JOIN은 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 일치하는 레코드를 반환합니다. 일치하는 레코드가 없는 경우 NULL을 반환합니다.
SELECT a.column1, b.column2 FROM table_a a RIGHT JOIN table_b b ON a.common_column = b.common_column;
예제:
SELECT employees.first_name, departments.department_name FROM employees RIGHT JOIN departments ON employees.department_id = departments.department_id;
FULL JOIN
FULL JOIN은 두 테이블의 모든 레코드를 반환하며, 일치하지 않는 레코드는 NULL을 반환합니다.
SELECT a.column1, b.column2 FROM table_a a FULL JOIN table_b b ON a.common_column = b.common_column;
예제:
SELECT employees.first_name, departments.department_name FROM employees FULL JOIN departments ON employees.department_id = departments.department_id;
SELF JOIN (Self Join)
SELF JOIN은 동일한 테이블을 조인하여 사용하는 방법입니다.
SELECT a.column1, b.column2 FROM table_name a INNER JOIN table_name b ON a.common_column = b.common_column;
예제:
SELECT e1.employee_id AS manager_id, e1.first_name AS manager_name, e2.employee_id AS employee_id, e2.first_name AS employee_name FROM employees e1 INNER JOIN employees e2 ON e1.employee_id = e2.manager_id;
OUTER APPLY, CROSS APPLY (Using OUTER APPLY and CROSS APPLY)
CROSS APPLY
CROSS APPLY는 왼쪽 테이블의 각 행에 대해 오른쪽 테이블을 평가하며, 오른쪽 테이블의 행과 일치하는 행만 반환합니다. 이는 특히 행 집합을 반환하는 함수와 함께 사용할 때 유용합니다.
SELECT a.column1, b.column2 FROM table_a a CROSS APPLY (SELECT * FROM table_b b WHERE a.common_column = b.common_column) b;
예제:
SELECT d.department_name, e.employee_id, e.first_name FROM departments d CROSS APPLY (SELECT employee_id, first_name FROM employees e WHERE e.department_id = d.department_id) e;
OUTER APPLY
OUTER APPLY는 왼쪽 테이블의 각 행에 대해 오른쪽 테이블을 평가하며, 오른쪽 테이블에 일치하는 행이 없으면 NULL을 반환합니다.
SELECT a.column1, b.column2 FROM table_a a OUTER APPLY (SELECT * FROM table_b b WHERE a.common_column = b.common_column) b;
예제:
SELECT d.department_name, e.employee_id, e.first_name FROM departments d OUTER APPLY (SELECT employee_id, first_name FROM employees e WHERE e.department_id = d.department_id) e;
이와 같이 다양한 조인 방법을 통해 여러 테이블에서 데이터를 효과적으로 결합하고 분석할 수 있습니다. 각 조인 방식은 특정 요구에 따라 선택하여 사용합니다. INNER JOIN은 일치하는 데이터만 반환하고, LEFT JOIN과 RIGHT JOIN은 특정 테이블의 모든 데이터를 포함하며, FULL JOIN은 두 테이블의 모든 데이터를 포함합니다. SELF JOIN은 동일한 테이블 내에서 연관된 데이터를 조회하는 데 사용되고, CROSS APPLY와 OUTER APPLY는 특히 테이블 값 함수를 활용할 때 유용합니다.