테이블조인
1. 테이블 관계와 ERD
- 관계형 데이터베이스 테이블 관계
- 1:1, 1:N, N:N 관계
- 회원과 주문(1:N), 주문과 상세 주문(1:N), 학생과 수업(N:N) 예시
- ERD(Entity Relationship Diagram)
- 테이블 간 관계를 도식화하여 JOIN 조건을 설계할 때 활용
2. 테이블 조인(JOIN) 종류
- Inner Join: 조인 조건에 맞는 데이터만 결합
- Left Join: 왼쪽 테이블 전체 + 매칭 데이터
- Right Join: 오른쪽 테이블 전체 + 매칭 데이터
- 비회원(9999999)이나 가입만 하고 주문 없는 회원 등 상황별 차이 확인
3. WHERE vs ON
- ON: 조인 조건 지정 (테이블 결합을 위한 조건)
- WHERE: 결합된 데이터에서 필터링
- 같은 조건을 WHERE에 두느냐 ON에 두느냐에 따라 결과가 달라질 수 있음
4. 테이블 조인 코딩 테스트
- SALE과 SALE_DETAIL을 JOIN해 연도별 QTY 합계 조회
- SALE + SALE_DETAIL + SERVICE JOIN → TYPE & SERVICE_NAME별 PRICE 합계
- HAVING으로 PRICE_SUM ≥ 10,000,000 필터
- CUSTOMER + SALE JOIN → 회원별 주문 수 집계 (주문 수=3인 회원만)
- SALE_DETAIL + SERVICE + HOTEL JOIN → PRICE ≥ 800,000 조건 필터링
* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
💡 생각 정리
이번 강의에서는 관계형 데이터베이스의 핵심 구조인 테이블 간 관계(1:1, 1:N, N:N) 와 이를 실제로 연결하는 JOIN의 개념을 명확히 이해할 수 있었다.
그동안 SQL에서 JOIN을 단순히 “테이블을 합치는 문법”으로만 생각했는데, 이번 강의를 통해 JOIN이야말로 데이터베이스 설계의 본질을 구현하는 과정이라는 점을 깨달았다.
ERD(Entity Relationship Diagram)는 단순한 시각화 도구가 아니라, 데이터 간의 논리적 관계를 설계하고 검증하는 설계도라는 점도 인상 깊었다.
특히 1:N 관계(예: 회원–주문, 주문–주문상세)는 실제 업무 데이터 구조에서 매우 자주 등장하므로, 이를 제대로 이해하지 못하면 JOIN 시 데이터가 중복되거나 누락될 위험이 있다는 점을 실감했다.
JOIN의 종류 중에서도 Inner Join과 Left Join의 차이는 실무에서 결과를 결정짓는 중요한 포인트였다.
Inner Join은 조건에 맞는 데이터만 결합하기 때문에 불필요한 행이 제거되지만, Left Join은 왼쪽 테이블의 모든 데이터를 유지하기 때문에 ‘누락된 데이터’를 포함해 분석할 수 있다.
이를 통해 “누락된 데이터도 의미 있는 데이터다”라는 관점을 배우게 되었다.
또한 ON과 WHERE의 차이 역시 단순한 문법 차원이 아니라, 데이터 결합 순서와 결과 범위를 제어하는 핵심 요소임을 알게 되었다.
ON은 테이블을 결합하는 조건을 지정하는 단계이고, WHERE은 결합된 이후의 결과를 필터링하는 단계이기 때문에, 같은 조건이라도 위치에 따라 결과가 달라질 수 있다.
이 개념을 명확히 구분하지 않으면 조인 결과가 전혀 다르게 나오거나 데이터가 누락될 수 있다는 점이 가장 인상 깊었다.
결국 이번 강의는 단순한 SQL 기술이 아니라, 데이터 구조를 이해하고 설계적으로 사고하는 SQL의 본질을 배운 시간이었다.
🚀 적용점
- 회원, 주문, 주문상세 테이블을 직접 생성하여 1:N 관계를 ERD로 시각화하고, 실제 SQL JOIN으로 동일한 구조를 구현해본다.
- Inner Join, Left Join, Right Join을 각각 실행하여 결과 행 수의 차이를 비교하며, 조인 방식에 따른 데이터 손실 여부를 확인한다.
- ON 조건과 WHERE 조건의 위치를 바꿔보며 결과 차이를 실험해본다. (특히 Left Join에서 차이가 두드러진다.)
- HAVING 절을 함께 활용해 JOIN + 집계 + 조건 필터링을 한 번에 수행하는 연습을 한다.
- “데이터 누락”이 중요한 의미를 가지는 실무 예시(예: 구매 이력이 없는 회원, 결제 실패 데이터 등)를 찾아 Left Join으로 분석해본다.
- ERD를 직접 그리며, JOIN 관계를 한눈에 파악할 수 있는 설계 습관을 기른다.
👉 이번 강의는 단순한 문법 학습이 아니라, SQL을 통해 데이터 구조와 관계를 ‘설계적으로 사고’하는 능력을 키우는 단계였다.
JOIN을 정확히 이해하면 이후 서브쿼리, 윈도우 함수, 데이터 마트 설계까지 훨씬 탄탄한 기반 위에서 확장할 수 있다.
'데이터' 카테고리의 다른 글
| 제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-6 (0) | 2025.10.05 |
|---|---|
| 제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-5 (0) | 2025.10.04 |
| 제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-3 (0) | 2025.10.03 |
| 제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-2 (0) | 2025.10.02 |
| 제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-1 (0) | 2025.10.01 |