SQL
- SELECT
내가 조회 할 컬럼
- 집계 함수
SUM, AVG, COUNT, MAX, MIN
- FROM
어느 테이블에서
- WHERE
조건절
null 은 is not null, is null
- like
where절과 함께 쓰이며 = 과 다르게 '%serchText%' 와 같이 검색의 용도로 사용한다.
- in
where절과 함께 쓰이며
WHERE a.user_id in ('abc', 'def')
등과 같이 여러 특정 값을 주고 싶을 때 사용한다.
- GROUP BY
그룹핑
- ORDER BY
정렬 (Desc, default = asc)
- as
Alias 별칭
as를통해 출력될 필드에 별칭, or table 옆에 a 와같이
- JOIN
left, right, inner, outter
테이블을 연결시키는데 공통된 값을 가진 컬럼이 있어야함.
- UNION ALL
우주 대통합 정렬이 깨지는데 서브쿼리로 해결 가능
- limit
갯수 조절 (숫자와 함께 사용)
- case
경우에 따라 원하는 값 붙이기
end 꼭 붙여주기
select pu.point_user_id, pu.point,
case
when pu.point > 10000 then '잘 하고 있어요!'
else '조금 더 달려주세요!'
END as '구분'
from point_users pu;
- 문자열 다루기
SUBSTRING_INDEX(email, '@', -1), SUBSTRING()
SUBSTRING(created_at, 부터, 만큼)
subquery
서브쿼리는 select절, where절, from절에 들어갈 수 있다.
- with
with 절로 내가만든 테이블을 실제 테이블처럼 사용할 수 있음
union all 시 깨지는 정렬 등도 이로 해결할 수 있음
with table1 as (select enrolled_id ,count(*) as total_cnt from enrolleds_detail ed
group by enrolled_id), table2 as(select enrolled_id ,count(*) as done_cnt from enrolleds_detail ed
WHERE done = 1
group by enrolled_id )
select a.enrolled_id, b.done_cnt, a.total_cnt, (b.done_cnt/a.total_cnt) as ratio from table1 a
join table2 b on a.enrolled_id = b.enrolled_id