Database/SQL

[SQL 실전] #01 SQL JOIN 실전 가이드, 다중 조인부터 SELF JOIN까지

TOASTDEV 2025. 8. 3. 16:00
반응형

 

안녕하세요 토스트데브입니다 😊
SQL 기초 게시글 SQL #01 ~ SQL #11을 통해서 SQL의 기초와 문법에 대해 배워보았습니다. 
이번 글 부터는 이제는 실무에서 더 자주마주치는 SQL에 대해 조금 더 분석해 볼게요!

SQL 기초에서 JOIN 문법을 익혔다면, 이제는 실무에서 더 자주 마주치는 JOIN 심화 활용법으로 넘어갈 차례입니다.
이번 글에서는 다중 테이블 조인, Self JOIN, JOIN + 서브쿼리 조합, 그리고 헷갈리기 쉬운 USING vs ON 비교까지 한번에 정리해드립니다!

 

 

1️⃣ 다중 테이블 조인 (Multi-table JOIN)

✅ 개념

두 개 이상의 테이블을 JOIN해서 하나의 결과로 합치는 방식입니다. 실무에서는 거의 항상 사용됩니다.

 

📌 예제

SELECT users.name, orders.product_name, payments.amount
FROM users
JOIN orders ON users.id = orders.user_id
JOIN payments ON orders.id = payments.order_id;

➡️ users, orders, payments 세 테이블을 연결하여 사용자, 주문, 결제 정보를 한 번에 조회합니다.

 

 

2️⃣ 자기참조(Self JOIN) 응용

✅ 개념

자기 자신과 같은 테이블을 조인해서 테이블 내부 관계를 표현할 수 있습니다.
대표적인 예: 상사-직원 관계, 카테고리 계층 구조 등

 

📌 예제

SELECT A.name AS 직원, B.name AS 상사
FROM employees A
JOIN employees B ON A.manager_id = B.id;

➡️ employees 테이블을 두 번 불러와서 상하관계 표현

 

 

3️⃣ JOIN + 서브쿼리 조합

✅ 개념

JOIN과 서브쿼리를 함께 사용하면 복잡한 조건 필터링이나 서브결과를 합쳐야 할 때 유용합니다.

 

📌 예제

SELECT u.name, o.total
FROM users u
JOIN (
  SELECT user_id, SUM(amount) AS total
  FROM orders
  GROUP BY user_id
) o ON u.id = o.user_id;

➡️ 서브쿼리로 사용자별 총 주문 금액을 구한 후, 사용자 정보와 함께 출력

 

 

4️⃣ USING vs ON 비교

✅ 공통점

둘 다 JOIN 조건을 지정하는 키워드입니다.

 

▶️ ON 사용 예

SELECT *
FROM users
JOIN orders ON users.id = orders.user_id;

 

  • 다른 컬럼명도 조인 가능
  • 조건이 복잡할 경우 ON이 유리

 

▶️ USING 사용 예

SELECT *
FROM users
JOIN orders USING (user_id);

 

 

  • 조인할 컬럼 이름이 양쪽 테이블에서 동일할 경우에만 사용 가능
  • 결과에서 user_id는 한 번만 출력됨 (중복 제거)

 

⚠️ 비교 요약

구분 USING ON
가독성 간결함 유연함
조건 컬럼명 동일해야 함 다르면 OK
결과 컬럼 출력 1개로 병합됨 각각 표시됨

 

 

 

📝 마무리

고급 JOIN 활용은 SQL 중급 단계의 핵심입니다.
다중 테이블 조인과 Self JOIN은 데이터 구조를 읽고 설계할 수 있어야 제대로 활용할 수 있고, JOIN + 서브쿼리 조합과 USING vs ON은 쿼리 가독성과 성능을 크게 좌우합니다.

앞으로 더 복잡한 SQL 분석을 하기 위한 중요한 기초이니, 꼭 실습과 함께 익혀보세요!

 

#SQL #SQL중급 #JOIN고급 #다중조인 #SelfJoin #서브쿼리조합 #USINGvsON #SQL강의 #데이터베이스 #DBMS #MySQL #쿼리최적화

반응형