빠르게 3주차 강의까지 마무리 되었다.
엑셀보다는 훨씬 쉬운것 같다.
join <--- 말그래도 두개의 table을 붙이는 기능을 한다.
- inner join = 교집합
ex)
SELECT * from orders o
inner join users u
on o.user_id = u.user_id
- left join = 첫 테이블 뒤에 다른 테이블을 붙이는 개념이다.
inner join과 형식은 똑같지만, inner join은 교집합이므로 겹치는 데이터들만 보여주지만
left join은 첫 테이블은 그대로 남아있으므로 붙이는 테이블의 순서가 중요해진다.
left join을 하면 빈 값이 생기기도 하는데 NULL로 표시된다.
join은 굉장히 쉬운 개념이였지만 퀴즈들을 통해서
select 뒤에 어떤 값들은 보여주고자 할 지 다양하게 표현할 수 있다는 것을 배웠다.
ex)
SELECT count(pu.point_user_id) as pnt_user_cnt,
count(u.user_id) as tot_user_cnt,
round(count(pu.point_user_id)/count(u.user_id),2) as ratio
FROM users u
left join point_users pu
on u.user_id = pu.user_id
WHERE u.created_at BETWEEN '2020-07-10' and '2020-07-20'
이런 식으로 join한 테이블에서 where로 특정 데이터를 추려낸 후에
select는 어떤 것을 할지 다양하게 설정해보는 것이 낯설었지만 편리했고
as 별칭 붙이기나 테이블 별칭이 왜 필요한지도 알게 되었다.
union <--- 두개의 SQL query 값을 붙여서 표시하는 기능을 한다.
생김새는 굉장히 단순하다.
(sql)
union all
(sql)
* union을 하면 각 sql에 적용되었단 order by가 작동하지 않기때문에 union 한 뒤에 다시 재정렬 해줘야한다.
벌써 다음 번이 4주차 강의로 마지막을 달린다.
배우는 것이 어렵게 느껴지진 않지만 쉬운 개념들이 차곡차곡 쌓여서
어려운 문제를 풀 수 있게 활용되는 기분을 느끼고 있다.
'성장하는 중 > SQL' 카테고리의 다른 글
[SQL 개발일지 : 4주차 마무리] subquery의 활용 (0) | 2023.02.08 |
---|---|
[SQL 개발일지 : 2주차] group by, order by 활용 (0) | 2023.01.25 |
[SQL 개발일지 : 1주차] where절 활용 (0) | 2023.01.24 |