데이터베이스에서 두 개 이상의 테이블 간에 관계를 형성하여 데이터를 결합하는 연산
여러 테이블에 저장된 데이터를 단일 결과 집합으로 가져옴
두 테이블 간 공통된 값이 일치하는 행만 반환
SELECT *
FROM 테이블1
INNER JOIN 테이블2 ON 테이블1.공통열 = 테이블2.공통열;
-- customers 테이블과 orders 테이블을 고객 아이디를 기준으로 INNER JOIN
SELECT customers.customer_id, customers.customer_name, orders.order_id
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;
두 테이블 간에 연결된 행을 반환하고 일치하지 않는 행도 포함
LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN이 있음
왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환
오른쪽 테이블에 일치하는 행이 없으면 NULL 값으로 채움
-- customers 테이블과 orders 테이블을 고객 아이디를 기준으로 LEFT JOIN
SELECT customers.customer_id, customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;
오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환
왼쪽 테이블에 일치하는 행이 없으면 NULL 값으로 채움
-- customers 테이블과 orders 테이블을 고객 아이디를 기준으로 RIGHT JOIN
SELECT customers.customer_id, customers.customer_name, orders.order_id
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;
양쪽 테이블의 모든 행을 반환하며, 일치하지 않는 행은 NULL 값으로 채움
-- customers 테이블과 orders 테이블을 고객 아이디를 기준으로 FULL JOIN
SELECT customers.customer_id, customers.customer_name, orders.order_id
FROM customers
FULL JOIN orders ON customers.customer_id = orders.customer_id;
테이블 간의 모든 가능한 조합을 반환
조인 조건이 필요하지 않음
-- employees 테이블과 departments 테이블을 CROSS JOIN
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
CROSS JOIN departments;