SQL - Join

Walter Mitty·2022년 5월 24일
0

SQL

목록 보기
5/15

join 간단히 살펴보기

: 테이블과 테이블을 붙이는 것.
실무에서 굉장히 많이 쓴다고 하니 꼭 내걸로 만들어보자(?)

Q1. 왜 테이블은 여러개로 나눠쓸까?
A. 테이블은 기본적으로 한 목적에 맞는 것들만 모아 놓다보니 나눠서 보관하게 된다.

Q2. 왜 join을 쓸까?
A. 내가 checkins 테이블에서 원하는 필드와 users에서 원하는 필드가 각 각 있을 때 코드가 굉장히 복잡해 지는데, join을 하면 이걸 한눈에 두개의 테이블을 볼 수 있다.

Q3. 어떻게 하나로 이어줄까?
A. 만약 checkins 테이블에 user_id 필드가 있고, users 테이블에도 user_id 필드가 있다면
이걸 매칭을 시킨다!

따라서, join을 할 땐 매칭시킬 기준이 필요하다!


join 이란

: 두 테이블의 공통된 정보(key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미한다.


join 의 종류

  • left join

-> A와 B를 각각 테이블을 의미. 둘 사이의 겹치는 부분은 A와 B의 key값이 연결되는 부분!
A테이블을 기준으로 B테이블을 붙이는 것.
왼쪽에 있는 걸 기준으로 오른쪽을 붙인다 = left join!

users 테이블과 point_users 테이블을 user_id 키값으로 left_join을 하고싶다!?

select * from users u
left join point_users pu
on u.user_id = pu.user_id

Null 값 = 매칭이 안되는 값 / 겹치지 않는 부분


  • inner join

-> 겹치는 부분(교집합) = Null 값 없어짐
왜냐하면 겹치는 부분만 가져오니까!

select * from users u
inner join point_users pu
on u.user_id = pu.user_id

left join은 누구에게 누굴 붙이는건지, 순서가 굉장히 중요하지만
inner join은 순서가 필요없이 겹치는 부분만 보여주므로 훨씬 쉽다.


  • Left join은 언제 쓸까?
    = 한쪽에는 있는데 한쪽에는 없는 것을 가지고 통계내고 싶을 때!

  • is NULL 인것만 가지고 올 수 있다 = 회원인데 포인트가 없는 사람 = 강의 시작을 안한 사람들

  • is not NULL = 회원이고 포인트가 있는 사람 = 강의 시작한 회원

0개의 댓글