[스파르타코딩클럽] 엑셀보다 쉬운 SQL - 3주차

hanna·2022년 3월 20일
0

📙 join

두 테이블간 교집합인 필드를 기준으로 하나의 테이블처럼 보이게 만들어줌

  • 사용법
select * from point_users
inner join users on point_users.user_id = users.user_id

: point_users 테이블의 user_id 필드와
users 테이블의 user_id를 교집합으로 하나의 테이블처럼 보이게 함.

  • ↓↓↓테이블1필드1테이블2필드1join 할 때↓↓↓

📝left join

  • 테이블1-필드1에는 존재하지만 테이블2-필드1에는 값이 존재하지 않을 때 Null값으로 표기
    • count는 Null 값을 세지 않음.
    • Null 값만 추출하기
      where '필드이름' is Null - Null의 'N'은 대문자로 표기!!
    • Null 값 제외하기
      where '필드이름' is not Null
  • join하는 순서가 중요함.

📝inner join

  • 테이블1-필드1테이블2-필드1모두에 존재하는 값만 나타냄.
  • join의 순서가 상관없음.

📙 union

두가지 조건의 결과를 이어 하나의 결과값으로 이어서 보기

  • 조건: 노란색과 파란색 박스의 필드명이 같아야 함❗❗❗
  • 사용법
(
	select '7월' as month, c.title, c2.week, count(*) as cnt from checkins c2
	inner join courses c on c2.course_id = c.course_id
	inner join orders o on o.user_id = c2.user_id
	where o.created_at < '2020-08-01'
	group by c2.course_id, c2.week
  order by c2.course_id, c2.week
)
union all
(
	select '8월' as month, c.title, c2.week, count(*) as cnt from checkins c2
	inner join courses c on c2.course_id = c.course_id
	inner join orders o on o.user_id = c2.user_id
	where o.created_at > '2020-08-01'
	group by c2.course_id, c2.week
  order by c2.course_id, c2.week
)
  • union에서는 내부정렬이 먹히지 않음(order by 무용지물😭) → 서브쿼리 사용하기

📓 3주차 후기

갑자기 직장인이 되버린 나는... 마지막날에 몰아치고 있다..... 그래도 SQL은 쉬워서 금방끝낼 수 있겠다. 웹코딩이 문제다ㅎㅎㅎ

0개의 댓글