안녕하세요 토스트데브입니다 😊
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 #쿼리최적화
'Database > SQL' 카테고리의 다른 글
[SQL] #11 SQL DCL과 TCL 완전 정리, 권한 관리와 트랜잭션 제어 쉽게 이해하기 (1) | 2025.08.02 |
---|---|
[SQL] #10 SQL 데이터 정의어(DDL) 완전 정리, CREATE부터 DROP까지 (1) | 2025.08.01 |
[SQL] #09 뷰(View)와 인덱스(Index) 완벽 이해! 속도와 재 사용을 동시에 잡자! (2) | 2025.07.31 |
[SQL] #08 SQL 서브쿼리 완전 정리, 중첩 쿼리의 개념과 예제까지 (1) | 2025.07.30 |
[SQL] #07 SQL JOIN 완전 정복! INNER부터 LEFT, RIGHT까지 한눈에 (1) | 2025.07.29 |