본문 바로가기
서비스 기획해요/강의 들어요

[인프런] 배워서 바로 쓰는 SQL 쿼리_#4. SQL 중상급 활용(Join)

by ellieyu 2024. 12. 3.
반응형
📌 이 글은 내돈내산으로 '[인프런] Joe의 배워서 바로 쓰는 SQL 쿼리' 강의 내용을 요약 정리한 것입니다. 


Join의 개념 

  • 여러 테이블을 하나로 합쳐주는 역할을 하는 SQL의 기능 
  • 지금까지의 SQL 쿼리들은 테이블 하나에 대해서만 데이터를 가져왔음
  • 4가지의 기본 Join을 알아볼 예정
  • 이후에는 다중 테이블에서 데이터를 가져올 수 있게 됨 (Cross Join, Left Join, Right Join, Inner Join)

 

Join의 원리 

  • Key(두 테이블 간의 공통점)를 기준으로 테이블을 합치게 됨 
  • Key의 종류: PK(Primary Key, 중심이 되는 키값), FK(Foreign Key, PK를 참조하고 있는 B테이블의 키)

 

Join의 종류 

사진 출처: https://s-y-130.tistory.com/143

  • Inner Join : 두 집합 간 공통되는 부분(교집합)만 합침 
  • Cross Join : 두 집합 모든 부분(합집합)을 합침 (즉, Cross join은 가능한 모든 경우의 수를 나타내고, 다른 join은 Cross join에서 특정 경우만 필터링 한 것.) 
  • Left Join : Inner Join을 통해 두 집합 간 공통되는 부분(교집합)은 당연히 포함하고, 공통되지 않더라도 왼쪽에 있는 A집합의 부분은 모두 포함 
  • Right Join : Inner Join을 통해 두 집합 간 공통되는 부분(교집합)은 당연히 포함하고, 공통되지 않더라도 오른쪽에 있는 B집합의 부분은 모두 포함 
  • 추가) Left Outer Join : 교집합은 제외하고 A테이블에만 포함되는 걸 추출해줘(차집합) 
  • 추가) Right Outer Join : 교집합은 제외하고 B테이블에만 포함되는 걸 추출해줘(차집합) 
  • 추가) Full Outer Join : Left Outer Join + Full Outer Join

 

Join의 코드 형태 

select *

            from

            (

                              table1

             ) a 

            inner join 

            ( 

                               table2

             ) b

             on a.key = b.key 

            ; 

            

  • from 절 뒤에 table 이름(table1, table2) 두 개를 적음 
  • 두 테이블의 가운데에 join 방식 적음 
  • 끝부분에 어떤 조건 위에서 합친다는 의미로 on + 각 테이블의 키 이름 적음  

 

실습 문제

  • 테이블명 뒤에 c, o 이런식으로 붙이는 건 약자로 만들겠다는 것 
  • on 뒤에 기준 키값 적을 때 어떤 테이블의 키값인지 c, o 이런 것도 적어줘야 함 
  • 참고) 엔터는 치든 안치든 똑같은 결과가 나옴(스페이스는 반드시 쳐야 함)

  • 실무에서는 right join이 헷갈릴 수 있으니 잘 사용하지 않는 편임 
  • 실무에서는 보통 left join, inner join만 주로 사용하는 편 

  • where 조건 추가할 때 해당 컬럼이 어디에 속해있는지 명시하는 것이 더 정확 ex. c.Country 

  • 1996년도 7월에 주문된 건만 추출 시, where o.orderdate between '1996-07-01' and '1996-07-31'도 가능 

 

join은 비즈니스애널리틱스 복수전공
강의에서 배웠던 개념이다.
그러나 데이터 조회할 때 직접
join을 사용해본 건 처음이라
재밌게 수강했다!

 

이번 join 파트 실습 문제 풀이할 때
그간 강의에서 배웠던 함수나 연산자 등의 내용들이
모두 뭉쳐져 응용할 수 있어서 더 흥미로웠다.
정신차려보니 내 손으로 SQL 코드를 짜고 있는

신기한 경험을 했다.

 

반응형