데이터 분석을 하다 보면 여러 개의 테이블을 합쳐야 할 일이 많습니다. 이때 사용하는 것이 조인(JOIN) 입니다. SQL의 조인은 하나 이상의 테이블을 연결하여 원하는 데이터를 조회할 수 있도록 도와줍니다. 이번 포스팅에서는 비개발자도 쉽게 이해할 수 있도록 SQL 조인 개념과 예제를 함께 살펴보겠습니다! 😊
1. SQL 조인이란?
조인(JOIN) 은 두 개 이상의 테이블을 특정한 조건을 기준으로 결합하는 방법입니다. 데이터베이스에서는 하나의 테이블에 모든 데이터를 저장하는 것이 아니라, 여러 개의 테이블로 나누어 관리합니다. 따라서 필요한 데이터를 가져오기 위해서는 조인을 사용해야 합니다.
📌 예제 데이터 소개
먼저, 두 개의 테이블을 예제로 사용해 보겠습니다.
고객(Customer) 테이블
customer_id | name | age |
---|---|---|
1 | 철수 | 25 |
2 | 영희 | 30 |
3 | 민수 | 28 |
4 | 지수 | 22 |
주문(Order) 테이블
order_id | customer_id | product |
101 | 1 | 노트북 |
102 | 2 | 스마트폰 |
103 | 1 | 마우스 |
104 | 3 | 키보드 |
이제 위의 데이터를 활용하여 각 조인 방식별로 설명하겠습니다! 🚀
2. 조인의 종류와 예제
1️⃣ INNER JOIN (내부 조인)
공통된 데이터만 조회하는 방식입니다. 즉, 두 테이블에서 일치하는 데이터만 가져옵니다.
SELECT c.customer_id, c.name, o.order_id, o.product
FROM Customer c
INNER JOIN Order o ON c.customer_id = o.customer_id;
결과
customer_id | name | order_id | product |
1 | 철수 | 101 | 노트북 |
1 | 철수 | 103 | 마우스 |
2 | 영희 | 102 | 스마트폰 |
3 | 민수 | 104 | 키보드 |
🔹 고객 테이블과 주문 테이블에서 customer_id가 일치하는 경우만 가져옵니다.
2️⃣ LEFT JOIN (왼쪽 조인)
왼쪽 테이블(Customer)의 모든 데이터를 가져오고, 오른쪽 테이블(Order)에 해당하는 데이터가 없으면 NULL
을 반환합니다.
SELECT c.customer_id, c.name, o.order_id, o.product
FROM Customer c
LEFT JOIN Order o ON c.customer_id = o.customer_id;
결과
customer_id | name | order_id | product |
1 | 철수 | 101 | 노트북 |
1 | 철수 | 103 | 마우스 |
2 | 영희 | 102 | 스마트폰 |
3 | 민수 | 104 | 키보드 |
4 | 지수 | NULL | NULL |
🔹 customer_id = 4 (지수)
는 주문한 적이 없으므로 order_id
와 product
값이 NULL
로 표시됩니다.
3️⃣ RIGHT JOIN (오른쪽 조인)
오른쪽 테이블(Order)의 모든 데이터를 가져오고, 왼쪽 테이블(Customer)에 해당하는 데이터가 없으면 NULL
을 반환합니다.
SELECT c.customer_id, c.name, o.order_id, o.product
FROM Customer c
RIGHT JOIN Order o ON c.customer_id = o.customer_id;
결과 (이번 예제에서는 RIGHT JOIN과 INNER JOIN이 동일한 결과를 가짐)
customer_id | name | order_id | product |
1 | 철수 | 101 | 노트북 |
1 | 철수 | 103 | 마우스 |
2 | 영희 | 102 | 스마트폰 |
3 | 민수 | 104 | 키보드 |
🔹 이 예제에서는 주문(Order) 테이블에 있는 모든 데이터가 고객(Customer) 테이블에 연결되므로 결과가 INNER JOIN과 동일합니다.
4️⃣ FULL OUTER JOIN (완전 외부 조인)
두 테이블의 모든 데이터를 가져오고, 일치하는 데이터가 없는 경우 NULL
을 반환합니다. (MySQL에서는 FULL OUTER JOIN이 직접 지원되지 않으며, UNION을 사용하여 구현해야 합니다.)
SELECT c.customer_id, c.name, o.order_id, o.product
FROM Customer c
FULL OUTER JOIN Order o ON c.customer_id = o.customer_id;
결과 (FULL OUTER JOIN을 사용한 경우)
customer_id | name | order_id | product |
1 | 철수 | 101 | 노트북 |
1 | 철수 | 103 | 마우스 |
2 | 영희 | 102 | 스마트폰 |
3 | 민수 | 104 | 키보드 |
4 | 지수 | NULL | NULL |
NULL | NULL | 105 | 태블릿 |
🔹 고객 테이블과 주문 테이블의 모든 데이터를 가져오며, 일치하지 않는 데이터는 NULL
처리됩니다.
3. 마무리
이제 SQL에서 자주 사용되는 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN의 개념과 예제를 살펴보았습니다. 정리하면 다음과 같습니다:
✅ INNER JOIN: 공통된 데이터만 조회 ✅ LEFT JOIN: 왼쪽 테이블의 모든 데이터 + 일치하지 않는 데이터는 NULL ✅ RIGHT JOIN: 오른쪽 테이블의 모든 데이터 + 일치하지 않는 데이터는 NULL ✅ FULL OUTER JOIN: 두 테이블의 모든 데이터 + 일치하지 않는 데이터는 NULL
SQL 조인은 데이터를 분석할 때 가장 많이 사용되는 개념이므로, 한 번 직접 실습해보면 더욱 쉽게 이해할 수 있을 거예요! 😉
궁금한 점이 있다면 댓글로 남겨주세요! 💬
답글 남기기