구름의 글들

[SQL] 기본문법 정리 본문

데이터분석/SQL

[SQL] 기본문법 정리

여그린 2023. 7. 24. 08:58

SELECT

Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미

1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지를 정할 수 있다.

 

# orders 테이블 전체 가져오기
select * from orders;
# orders 테이블에서 생성일시(created_at)과 결제수단(payment_method)만 가져오기
select created_at,payment_method from orders;

 

WHERE

Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미

# point를 쓴 유저 테이블에서 포인트가 2만점이 넘는 사람만 가져오기
select * from point_users
where point > 20000;
# 유저 테이블에서 성이 황씨인 사람만 가져오기
select * from users
where name = "황**";

 

COUNT

특정 조건에 맞는 데이터의 수를 세준다.

# 주문 테이블에서 주문 수업 이름이 앱개발 종합반인 오더 수만 가져오겠다.
select count(*) from orders
where course_title = "앱개발 종합반";

 

GROUP BY

동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것을 의미.

Group by를 이용하면 ex) 1) 같은 성씨의 데이터를 하나로 묶고 2) 각 성씨의 회원수를 구할 수 있다.

# 유저 테이블에서 각 이름별로 몇 명인지 숫자를 세준다.
select name, count(*) from users
group by name;

위 쿼리가 실행되는 순서,

  1. from users: users 테이블 데이터 전체 가져오기
  2. group by name: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐주기
  3. select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어주기
  4. 예) 이**, 이**, 김**, 김**, 박** 이렇게 데이터가 있었다면, 이는 2개, 김은 2개, 박**은 1개로 출력됨.

 

MIN() / MAX()

동일한 범주에서의 최솟값/최댓값 구하기

# checkins 테이블에서 주차별로 가장 적은 likes 수를 구하기
select week, min(likes) from checkins
group by week;
# checkins 테이블에서 주차별로 가장 많은 likes 수를 구하기
select week, max(likes) from checkins
group by week;

 

AVG()

동일한 범주 특정 필드의 평균값 구하기

# checkins 테이블에서 주차별로 평균 likes 수를 구하기
select week, max(likes) from checkins
group by week;

 

SUM()

동일한 범주 특정 필드의 합계 구하기

# checkins 테이블에서 주차별로 likes 총합을 구하기
select week, sum(likes) from checkins
group by week;

 

ORDER BY / ORDER BY DESC

특정 필드 기준으로 내림차순/오름차순하기

# 유저 테이블에서 이름 기준으로 정렬하되, 각 이름별 개수를 오름차순하여 정렬한다.
select name, count(*) from users
group by name
order by count(*);
# 유저 테이블에서 이름 기준으로 정렬하되, 각 이름별 개수를 내림차순하여 정렬한다.
select name, count(*) from users
group by name
order by count(*) desc;

 

위 쿼리가 실행되는 순서,

  1. from users: users 테이블 데이터 전체를 가져오기
  2. group by name: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐주기
  3. select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어주기
  4. 예) 이**, 이**, 김**, 김**, 박** 이렇게 데이터가 있었다면, 이는 2개, 김은 2개, 박**은 1개로 나옴.
  5. order by count(*): 합쳐진 데이터의 개수에 따라 오름차순으로 정렬해주기

 

그 외 문법

  • 별칭 기능: Alias
# orders 테이블을 짧게 o라는 별칭을 지어줌.
select * from orders o
where o.course_title = '앱개발 종합반'
# count(*) 개수의 별칭을 cnt라고 함.
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method

 

 

JOIN

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

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

 

Comments