스파르타/SQL

SQL_3주차_ join 기초

옒르 2023. 1. 12. 17:27

1) Join이란?

 👉 Join이란? 두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미해요.

예) user_id 필드를 기준으로 users 테이블과 orders 테이블을 연결해서 한 눈에 보고 싶어요!

 

2) Join의 종류

  • Left Join

ex) select * from users u

      left join point_users p on u.user_id = p.user_id

 

  • Inner Join   # 일종의 교집합

ex) select * from users u

      inner join point_users p on u.user_id = p.user_id       # 각 필드마다 별칭을 붙여 join시 사용

 

3) Join 연습하기

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

select * from orders o

inner join users u on o.user_id = u.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

inner join courses c on e.course_id = c.course_id

 

  • checkins 테이블에 courses 테이블 연결해서 통계치 내보기 _ 과목별 오늘의 다짐 갯수 세어보기

select ch.course_id, c.title , count(*) as cnt from checkins ch

inner join courses c on ch.course_id = c.course_id

group by ch.course_id      # ~별로 : group by

 

  • point_users 테이블에 users 테이블 연결해서 순서대로 정렬해보기 _ 많은 포인트를 얻은 순서대로 유저 데이터 정렬해서 보기

select p.user_id ,u.name , u.email ,p.point from point_users p     # user_id, name, email, point만 추출하기

inner join users u on p.user_id = u.user_id

order by p.point desc

 

  • orders 테이블에 users 테이블 연결해서 통계치 내보기 _ 네이버 이메일 사용하는 유저의 성씨별 주문건수 세어보기

select u.name, count(*) as cnt from orders o

inner join users u on o.user_id = u.user_id

where u.email like '%naver.com'                        # 네이버 이메일을 사용한다는 조건을 받기 -> where 은 %와 같이 사용  

group by u.name

'스파르타 > SQL' 카테고리의 다른 글

SQL_3주차_ Left join  (0) 2023.01.12
SQL_3주차_ join 퀴즈  (0) 2023.01.12
SQL_2주차_숙제  (0) 2023.01.04
SQL_2주차_Group by와 Order by  (0) 2023.01.03
SQL_1주차_ 숙제  (0) 2023.01.03