본문 바로가기
공부/SQL & JPQL

SQL 공부하기 - 4

by 고구밍 2022. 5. 2.

시간을 기준으로 정렬해보기

select * from users
order by created_at desc;

 

 

👉 자, Group by는 퀴즈를 풀어볼까요?

(1) 원하는 테이블과

(2) 범주로 사용할 필드

(3) 범주에 따라 통계를 계산하고 싶은 필드 (개수의 경우 제외)

이 세 가지만 기억하면 됩니다!

 

 

쿼리 작성법

 

1) show tables로 어떤 테이블이 있는지 살펴보기

2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기

3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기

4) 테이블을 찾았다! 범주를 나눠서 보고싶은 필드를 찾기

5) 범주별로 통계를 보고싶은 필드를 찾기

6) SQL 쿼리 작성하기!

 

 

 

 

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

 

 👉 위 쿼리가 실행되는 순서: from → join → select

 

  1. from enrolleds: enrolleds 테이블 데이터 전체를 가져옵니다.
  2. inner join courses on e.course_id = c.course_id: courses를 enrolleds 테이블에 붙이는데, enrolleds 테이블의 course_id와 동일한 course_id를 갖는 courses의 테이블을 붙입니다.
  3. select * : 붙여진 모든 데이터를 출력합니다.

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

 

 

 

select * from point_users p
inner join users u 
on p.user_id = u.user_id
order by p.point desc

2주차에 배운 alias는 이렇게 사용하면 편합니다. 연결되는 테이블이 많아지면서 필드명과 테이블명이 헷갈려 실수할 수 있는데, 이렇게 alias를 지정해 주면 편하고 깔끔하게 SQL 쿼리를 작성할 수 있어요.

 

 

네이버 이메일 사용하는 유저의 성씨별 주문건수 세어보기

select u.name, count(u.name) as count_name from orders o
inner join users u
on o.user_id = u.user_id 
where u.email like '%naver.com'
group by u.name

 

SQL 쿼리가 실행되는 순서

select u.name, count(u.name) as count_name from orders o
inner join users u
on o.user_id = u.user_id 
where u.email like '%naver.com'
group by u.name
  1. from orders o: orders 테이블 데이터 전체를 가져오고 o라는 별칭을 붙입니다.
  2. inner join users u on o.user_id = u.user_id : users 테이블을 orders 테이블에 붙이는데, orders 테이블의 user_id와 동일한 user_id를 갖는 users 테이블 데이터를 붙입니다. (*users 테이블에 u라는 별칭을 붙입니다)
  3. where u.email like '%naver.com': users 테이블 email 필드값이 naver.com으로 끝나는 값만 가져옵니다.
  4. group by u.name: users 테이블의 name값이 같은 값들을 뭉쳐줍니다.
  5. select u.name, count(u.name) as count_name : users 테이블의 name필드와 name 필드를 기준으로 뭉쳐진 갯수를 세어서 출력해줍니다.

Join의 실행 순서는 항상 from 과 붙어다닌다고 생각하면 편해요!

'공부 > SQL & JPQL' 카테고리의 다른 글

JPQL 콘솔로 쿼리문 작성해보기 - 1  (0) 2022.05.24
SQL공부하기 - 3  (0) 2022.05.02
SQL 공부하기 - 2  (0) 2022.05.02
SQL 공부하기 - 1  (0) 2022.05.01