SQL문은 저장된 데이터를 읽어오는 과정을 편리하게 만들어준다.
SQL쿼리에서 조건을 지정하여 특정한 행(row)만을 선택할 때 사용된다.
SELECT, UPDATE, DELETE 등의 명령문과 함께 사용되어, 조건을 충족하는 데이터만 처리할 수 있게 한다.
여기에선 데이터를 불러오고(SELECT), 조건에 맞게 필터링(WHERE절)과 자주 쓰이는 문법에 대해 공부해보자.
SELECT * from orders
WHERE course_title != "웹개발 종합반";
SELECT * from orders
WHERE created_at between "2020-07-13" and "2020-07-15";
SELECT * from checkins
WHERE week in (1, 3);
예를 들어 이메일의 경우
SELECT * from users
WHERE email like '%daum.net';
5개가 출력이 된다.
SELECT * from orders
WHERE payment_method = "kakaopay"
limit 5;
SELECT distinct(payment_method) from orders;
orders 테이블에 데이터가 몇 개 들어 있는지 확인 가능하다.
SELECT count(*) from orders;
SELECT count(distinct(name)) from users;
데이터를 범주에 따라 묶어서 통계치를 구하고(Group by), 정렬하는 것(Order by)을 배워보자.
동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내준다.
예를들어, 같은 성씨의 데이터를 하나로 묶고, 각 성씨의 회원수를 구할 수 있다.
SELECT name, count(*) from users
group by name;
위 쿼리가 실행되는 순서: from → group by → select
SELECT 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
SELECT week, min(likes) from checkins
group by week;
SELECT week, max(likes) from checkins
group by week;
SELECT week, avg(likes) from checkins
group by week;
SELECT week, sum(likes) from checkins
group by week;
위의 데이터를 정렬할 수 있다.
SELECT name, count(*) from users
group by name;
order by count(); 만 추가해도 count()값을 기준으로 정렬한다.
SELECT name, count(*) from users
group by name
order by count(*);
SELECT name, count(*) from users
group by name
order by count(*) desc;
위 쿼리가 실행되는 순서: from → group by → select → order by
order by는 정렬해주기 때문에 맨 나중에 실행이된다.
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;
위 쿼리가 실행되는 순서: from → where → group by → select
두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보일 수 있다. 여러 데이터를 합쳐서 분석(Join) 해볼 수 있다.
데이터 분석을 위해서 데이터를 원하는 형태로 정리하는 방법(Subquery)을 배워보자.
참고 자료