걷기 시작한 Coding Novice

SQL

Join 연습해보기 (feat. Inner Join)

Spell 2022. 5. 23. 19:15

 

orders 테이블에 users 테이블 연결해보기

직접 해보기에 앞서 두 테이블을 확인 할 필요가 있다.

어떤 테이블에 어떤 내용들이 있는지 항상 확인하는 습관을 길러야 하니까

select *
from orders o

 

select *
from users u

 

두개의 테이블에 user_id가 함께 필드로 있는 걸 알 수 있다.

그럼 user_id를 key로 활용하여 연결시키면 되겠다.

select *
from orders o
inner join users u
on o.user_id = u.user_id

user_id를 기점으로 왼쪽은 orders 테이블이고, 오른쪽은 users 테이블의 내용임을 알 수 있다. users_id를 key로 두 테이블을 붙인 것이다.

 

일단 왜 inner join으로 했는가? inner join이 left join보다 조금 더 쉽게 때문에, 이를 좀 더 숙달하고 나서 left join으로 넘어가기 위함이다.
단적으로 이런 차이가 날 수 있는데, left join으로 생각해보면 A에 B를 붙이는데, 없으면 null로 보여주는 것이다. 그러니 누구에게 누구를 붙이는 이 순서가 굉장히 중요하다. 하지만 inner join은 순서가 바뀌어도 교집합을 나타냄으로 상관이 없다.

 


checkins 테이블에 users 테이블 연결해보기

이것도 먼저 두 테이블을 확인해 봐야겠지?

 

select *
from checkins ch

 

select *
from users u

 

여기서 key는 user_id가 양쪽 테이블 필드에 존재하고, checkins 테이블에 users 테이블을 붙이는 거니까..

select *
from checkins ch
inner join users u 
on ch.user_id = u.user_id

 


enrolleds 테이블에 courses 테이블 연결해보기

역시나 테이블 부터 확인!

select *
from enrolleds e

 

select *
from courses c

 

key로는 course_id를 사용하면 될 것 같다. 그리고 enrolleds에 courses를 붙일꺼니까..

select *
from enrolleds e
inner join courses c
on e.course_id = c.course_id

 


마지막 예시로 한번 더 짚고 넘어가야 할 해당 SQL 쿼리가 실행되는 순서!
select *
from enrolleds e
inner join courses c
on e.course_id = c.course_id​

위의 쿼리가 실행되는 순서는 from → join → select
1. from enrolleds e : enrolleds 테이블 데이터 전체를 가져오고
2. inner join courses c
   on e.course_id = c.course_id
courses를 enrolleds 테이블에 붙이는데, enrolleds 테이블의 course_id와 동일한 course_id를 갖는 courses의 테이블을 붙이고!
3. select * : 붙여진 모든 데이터를 출력!

 

 

항상 from 들어간 테이블을 기준으로, 다른 테이블이 붙는다고 생각하면 좋다!!!!