1. INNER JOIN (내부 조인)
역할: INNER JOIN은 두 테이블의 공통된 데이터만 조회합니다. 즉, 조인 조건을 만족하는 데이터만 결과에 포함되며, 조건에 맞지 않는 데이터는 제외됩니다.
사용 예시: 주로 두 테이블의 공통 데이터만 필요할 때 사용합니다. 예를 들어, 고객이 주문한 상품 목록을 보고 싶을 때 INNER JOIN을 사용해 고객과 주문 테이블에서 공통된 고객 정보만 가져올 수 있습니다.
예시 코드:
SELECT customers.name, orders.order_id FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id;
이 코드는
customers
와orders
테이블에서 공통된customer_id
가 있는 데이터만 조회합니다. 즉, 주문을 한 고객만 결과에 포함됩니다.쉽게 설명: INNER JOIN은 두 리스트에 공통으로 들어 있는 항목만 골라내는 것입니다. 두 테이블에 모두 있어야 결과에 포함됩니다.
2. LEFT JOIN (왼쪽 외부 조인)
역할: LEFT JOIN은 왼쪽 테이블의 모든 데이터를 가져오고, 오른쪽 테이블에 일치하는 데이터가 없으면 NULL로 표시합니다. 즉, 왼쪽 테이블에 있는 데이터는 무조건 포함하고, 오른쪽 테이블의 데이터는 조인 조건에 맞을 때만 포함됩니다.
사용 예시: 주로 기준 테이블의 모든 데이터를 보고 싶을 때 사용합니다. 예를 들어, 모든 고객의 목록과 함께 주문이 있는 경우 주문 정보를 보고 싶다면 LEFT JOIN을 사용합니다.
예시 코드:
SELECT customers.name, orders.order_id FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;
이 코드는 모든 고객의 이름을 조회하고, 주문이 있는 경우 주문 ID도 함께 표시합니다. 만약 어떤 고객이 주문을 하지 않았다면, 해당 고객의 주문 ID에는 NULL이 표시됩니다.
쉽게 설명: LEFT JOIN은 "왼쪽 목록을 기준으로 모든 항목을 포함하되, 오른쪽 목록에서 맞는 항목이 있으면 같이 보여주는 것"입니다. 즉, 왼쪽 테이블 데이터는 다 보여줍니다.
3. RIGHT JOIN (오른쪽 외부 조인)
역할: RIGHT JOIN은 RIGHT JOIN은 오른쪽 테이블의 모든 데이터를 가져오고, 왼쪽 테이블에 일치하는 데이터가 없으면 NULL로 표시합니다. 즉, 오른쪽 테이블의 모든 데이터는 포함하고, 왼쪽 테이블의 데이터는 조인 조건에 맞을 때만 포함됩니다.
사용 예시: 주로 특정 테이블의 모든 데이터와 다른 테이블의 일치하는 정보를 함께 보고 싶을 때 사용합니다. 예를 들어, 모든 주문 목록을 보고, 고객 정보가 있는 경우 함께 표시하려면 RIGHT JOIN을 사용합니다.
예시 코드:
SELECT customers.name, orders.order_id FROM customers RIGHT JOIN orders ON customers.customer_id = orders.customer_id;
이 코드는
orders
테이블의 모든 주문 ID를 표시하고, 해당 주문에 고객 정보가 있는 경우 고객 이름을 함께 보여줍니다. 만약 어떤 주문이 고객 정보가 없는 경우, 고객 이름에는 NULL이 표시됩니다.쉽게 설명: RIGHT JOIN은 "오른쪽 목록을 기준으로 모든 항목을 포함하되, 왼쪽 목록에서 맞는 항목이 있으면 같이 보여주는 것"입니다. 오른쪽 테이블의 모든 데이터가 보입니다.
4. FULL OUTER JOIN (완전 외부 조인)
역할: FULL OUTER JOIN은 왼쪽과 오른쪽 테이블의 모든 데이터를 조회하며, 양쪽 테이블 중 어느 한쪽에만 존재하는 데이터도 포함합니다. 만약 조인 조건에 맞지 않는 데이터가 있다면, 해당 테이블의 값은 NULL로 표시됩니다.
사용 예시: 두 테이블의 모든 데이터가 필요하고, 어느 한쪽 테이블에만 있는 데이터도 포함해야 할 때 사용합니다. 예를 들어, 모든 고객과 모든 주문 데이터를 포함하여 조회하려면 FULL OUTER JOIN을 사용합니다.
예시 코드:
SELECT customers.name, orders.order_id FROM customers FULL OUTER JOIN orders ON customers.customer_id = orders.customer_id;
이 코드는 모든 고객과 모든 주문 ID를 포함하며, 고객이 주문을 하지 않거나 주문에 고객 정보가 없는 경우에도 데이터를 포함합니다. 일치하지 않는 경우 NULL이 표시됩니다.
쉽게 설명: FULL OUTER JOIN은 두 목록을 "모두 포함하되, 맞지 않는 항목이 있으면 비워두고 보여주는 것"입니다. 두 테이블의 데이터를 모두 볼 수 있습니다.
5. 조인 종류별 차이점 정리
조인 종류 | 설명 | 결과 예시 |
---|---|---|
INNER JOIN | 두 테이블에서 조건이 맞는 공통된 데이터만 조회 | 주문이 있는 고객만 조회 |
LEFT JOIN | 왼쪽 테이블의 모든 데이터와 오른쪽 테이블에서 일치하는 데이터 조회. 왼쪽 데이터가 기준 | 모든 고객과 함께 주문이 있는 경우만 조회, 없는 경우 NULL |
RIGHT JOIN | 오른쪽 테이블의 모든 데이터와 왼쪽 테이블에서 일치하는 데이터 조회. 오른쪽 데이터가 기준 | 모든 주문과 함께 고객이 있는 경우 조회, 없는 경우 NULL |
FULL OUTER JOIN | 왼쪽과 오른쪽 테이블의 모든 데이터를 조회하고, 일치하지 않는 데이터는 NULL로 표시 | 모든 고객과 모든 주문 데이터를 포함하여 조회. 주문 없는 고객, 고객 정보 없는 주문 모두 포함 |
조인은 데이터베이스에서 여러 테이블을 결합하여 원하는 데이터를 효율적으로 조회하는 강력한 도구입니다. 각 조인 방식의 특징과 차이를 잘 이해하고 사용하면, 필요한 데이터를 정확하게 조회할 수 있습니다.
'데이터베이스' 카테고리의 다른 글
데이터베이스 락(lock)의 종류와 동작 방식 (0) | 2024.10.29 |
---|---|
트랜잭션의 ACID 특성 (1) | 2024.10.29 |
정규화(Normalization)와 비정규화(Denormalization)의 개념 및 장단점 (0) | 2024.10.29 |
인덱스의 역할과 사용 이유 (0) | 2024.10.29 |
RDBMS와 NoSQL의 차이점 (0) | 2024.10.29 |