본문 바로가기
DB

[MySQL] 조인 (Join) 정리

by 세바개님 2023. 3. 10.

MySQL JOIN은 두 개 이상의 테이블에서 데이터를 가져와 결합하는 작업입니다. 이를 통해 데이터를 조합하고 쿼리 결과를 더욱 유용하게 만들 수 있습니다.

MySQL JOIN은 크게 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 등으로 분류됩니다.

1. INNER JOIN

INNER JOIN은 두 개 이상의 테이블에서 매칭되는 데이터를 찾아서 결합하는 방식입니다. 예를 들어, 고객 정보와 주문 정보를 각각의 테이블에서 가져와 결합하는 경우, 두 테이블에서 공통으로 가지고 있는 고객 ID를 기준으로 INNER JOIN을 수행합니다. INNER JOIN은 공통된 값이 있는 경우에만 결과를 출력합니다.

SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;


2. LEFT JOIN


LEFT JOIN은 왼쪽에 있는 테이블의 모든 레코드와 오른쪽 테이블의 매칭되는 레코드를 결합합니다. 만약 오른쪽 테이블에 해당하는 레코드가 없는 경우에는 NULL 값을 출력합니다.

SELECT customers.name, orders.order_date
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

3. RIGHT JOIN


RIGHT JOIN은 LEFT JOIN의 반대로 오른쪽에 있는 테이블의 모든 레코드와 왼쪽 테이블의 매칭되는 레코드를 결합합니다. 만약 왼쪽 테이블에 해당하는 레코드가 없는 경우에는 NULL 값을 출력합니다.

SELECT customers.name, orders.order_date
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;


4. FULL OUTER JOIN


FULL OUTER JOIN은 왼쪽과 오른쪽 테이블 모두에 있는 모든 레코드를 결합합니다. 만약 매칭되는 값이 없는 경우에도 결과를 출력합니다.

MySQL에서는 FULL OUTER JOIN 구문을 직접 지원하지 않기 때문에 LEFT JOIN과 RIGHT JOIN을 UNION으로 결합해서 사용합니다.

SELECT customers.name, orders.order_date
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id
UNION
SELECT customers.name, orders.order_date
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;


이렇게 JOIN을 이용하여 두 개 이상의 테이블을 결합하면, 데이터베이스에서 다양한 정보를 추출할 수 있습니다. JOIN은 MySQL에서 매우 중요한 개념 중 하나이며, 데이터를 효율적으로 분석하고 활용하는 데 필수적입니다.

댓글