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 에 들어간 테이블을 기준으로, 다른 테이블이 붙는다고 생각하면 좋다!!!!
'SQL' 카테고리의 다른 글
본격 쿼리 직접 작성해보기 (feat. inner join) (0) | 2022.05.24 |
---|---|
Join 연습해보기 2 (feat. Inner Join) (0) | 2022.05.23 |
Join (Left Join / Inner Join) (0) | 2022.05.22 |
Join을 왜 배우고 왜 써야하는가? (0) | 2022.05.22 |
별칭을 사용하여 group by, order by, where 연습해보기 (0) | 2022.05.22 |