: 테이블과 테이블을 붙이는 것.
실무에서 굉장히 많이 쓴다고 하니 꼭 내걸로 만들어보자(?)
Q1. 왜 테이블은 여러개로 나눠쓸까?
A. 테이블은 기본적으로 한 목적에 맞는 것들만 모아 놓다보니 나눠서 보관하게 된다.
Q2. 왜 join을 쓸까?
A. 내가 checkins 테이블에서 원하는 필드와 users에서 원하는 필드가 각 각 있을 때 코드가 굉장히 복잡해 지는데, join을 하면 이걸 한눈에 두개의 테이블을 볼 수 있다.
Q3. 어떻게 하나로 이어줄까?
A. 만약 checkins 테이블에 user_id 필드가 있고, users 테이블에도 user_id 필드가 있다면
이걸 매칭을 시킨다!
따라서, join을 할 땐 매칭시킬 기준이 필요하다!
: 두 테이블의 공통된 정보(key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미한다.
-> 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 값 = 매칭이 안되는 값 / 겹치지 않는 부분
-> 겹치는 부분(교집합) = 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 = 회원이고 포인트가 있는 사람 = 강의 시작한 회원