카테고리 없음

MySQL Inner join & Left join 이해하기 | 내일배움캠프 25.05.14 (수) TIL

marketing-moong 2025. 5. 14. 21:58

📌 오늘 학습 키워드

  • INNER JOIN / LEFT JOIN
  • CROSS JOIN

📖 오늘 학습한 내용을 나만의 언어로 정리하기

[JOIN 함수의 예시]

 

<Customer 테이블>

Customer ID First name Last name
1 John Oliver
2 James Gates
3 Kelly Hill
4 Alf Loft

 

<Orders 테이블>

Order ID Customer ID Item
5001 1 Towel
5002 1 Shoes
5003 2 T-shirt
5004 2 Bag
5005 1 Pen
5006 5 Chair

 

1) Inner Join을 하는 경우

  • Customer 테이블에 있는 고객 중, 주문을 하지 않은 고객의 데이터는 포함되지 않는다. 
  • Orders 테이블에 있는 주문 중, Customer 테이블에 정보가 없는 값은 포함되지 않는다. 

➡️ Orders 테이블의 Order ID 칼럼 데이터 중 5006에 대한 정보가 누락된다. 

➡️ Customers 테이블의 Customer ID 3,4 에 대한 정보가 누락

 

 

2) Customer left join Orders를 하는 경우 

  • Customers 테이블에 정보는 있지만, 주문을 하지 않아 Orders 테이블에는 없는 정보는 NULL로 표시된다. 

➡️ 주문을 했는지 여부와 관계 없이 Customers 테이블의 모든 정보를 가져오고 싶은 경우에 사용한다. 

 

 

3) Orders left join Customers 를 하는 경우 

  • Orders 테이블에 정보는 있지만, 주문을 하지 않아 Customers 테이블에는 없는 정보는 NULL로 표시된다. 

➡️ 회원 가입(혹은 탈퇴)을 했는지 여부와 관계 없이 Orders 테이블의 모든 정보를 가져오고 싶은 경우에 사용한다. 


 학습하며 겪었던 문제점 & 에러

 

1번째, 3번째 쿼리의 결과는 동일하게 나오는데, 2번째 쿼리의 결과만 다르게 나왔다. 

정답과 동일한 결과값이 나오는 쿼리는 1,3 번인데 left join 과 inner join 중 어떤 것을 사용해야 하는지 이해가 가지 않았다. 

 

+ 추가적으로, 고객 1명당 평균 결제 금액을 구하는 부분도 오류가 있는 것 같다는 의견을 전달받았다. 


🎯 내일 학습할 내용

  • 5주차 강의에서 사용하는 쿼리문을 많이 활용하고 계신다는 정보를 들어서, 내일은 5주차 강의부터 다시 차근차근 들어보려고 한다. 
  • 과제를 푸는데 시간이 오래 걸려서 마음이 급해졌지만, 그래도 어제보다 나아진 오늘의 나를 보며 차근차근 실력을 쌓아가야겠다고 생각했다.