where- 데이터에 조건을 걸어준다
select * from orders where payment_method = "kakaopay";
order 테이블에서 payment_methpd가 카카오페이인 것만 가져와라.
'같지 않음' 조건은 != 로 걸 수 있습니다.
select * from orders where course_title != "웹개발 종합반";
범위' 조건은 between
select * from orders where created_at between "2020-07-13" and "2020-07-15";
포함' 조건은 in 으로 걸 수 있어요.
select * from checkins where week in (1, 3);
패턴' 조건은 like
select * from users where email like '%daum.net';
일부 데이터만 가져오는 Limit
select * from orders where payment_method = "kakaopay" limit 5;
중복 데이터는 제외하고 가져오기: Distinct
select distinct(payment_method) from orders;
몇 개인지 숫자 세보기: Count
select count(*) from orders
범주의 통계를 내주는 Group by
select name, count(*) from users
group by name;
Order by로 앞의 결과를 정렬해보자
select name, count(*) from users group by name order by count(*) desc;
Join이란? 두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미해요.
select * from checkins c inner join users u on c.user_id = u.user_id;
Subquery란? 쿼리 안의 쿼리라는 의미입니다.
Where은 조건문이죠? Subquery의 결과를 조건에 활용하는 방식으로 유용하게 사용합니다.
select * from users u where u.user_id in (select o.user_id from orders o where o.payment_method = 'kakaopay');
Select는 결과를 출력해주는 부분이죠? 기존 테이블에 함께 보고싶은 통계 데이터를 손쉽게 붙이는 것에 사용합니다.
select c.checkin_id, c.user_id, c.likes, (select avg(likes) from checkins c2 where c2.user_id = c.user_id) as avg_like_user from checkins c;
From은 언제 사용하면 좋을까요? 내가 만든 Select와 이미 있는 테이블을 Join하고 싶을 때 사용하면 딱이겠죠!
select pu.user_id, a.avg_like, pu.point from point_users pu
inner join (
select user_id, round(avg(likes),1) as avg_like from checkins
group by user_id
) a on pu.user_id = a.user_id
'죽을때까지 공부 > sql' 카테고리의 다른 글
SQL 개발일지 -1 (0) | 2023.03.29 |
---|
댓글