본문 바로가기

카테고리 없음

엑셀보다 쉬운 SQL 정리 일지

<1주차> 
* select from
* where
* * : 전체 

* 문자열을 지칭 할 때는 반드시 ' ' 를 사용하기. 단, 숫자는 ' '사용을 하지 않는다.
 ex) WHERE payment_method = 'kakaopay'

* where 절과 자주 같이 쓰는 문법
 - != ~(같지 않음)
 - between ~(범위)
 - in ~(포함)
 - like ~(패턴, %를 주로 이용)

* 일부 데이어만 가져오기 : limit ~
* 중복 제거하고 보기 : distinct(필드) 
* 몇 개인지 숫자 세보기 : count(*)

<2주차>
* group by ~
* select 필드명, ( sum(~), min(~), max(~), avg(~)/round(avg(~), n) ) : 소수 n번째 자리까지 구하고 싶을때 roound 사용
* order by : 기본은 오름차순이고, 내림차순으로 쓸때는 뒤에 desc 를 붙임

* 별칭 사용하기 : from 필드명 뒤에 알파벳 한글자 or  select 필드명 뒤에 as abc
ex) select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'

<3주차>
* join : 두개의 테이블을 연결할 수 있음 
-Left Join(왼쪽꺼에 오른쪽 꺼를 붙임)
ex) SELECT * FROM users u
     left join point_users pu on u.user_id = pu.user_id 
-Inner Join(교집합)
ex) SELECT * FROM users u
     inner join point_users pu on u.user_id = pu.user_id 

* count()는 NULL을 세지 않음!
* union all

<4주차>
* where절에 들어가는 subquery : where 필드명 in (subquery)
* Select 에 들어가는 Subquery : select 필드명, 필드명, (subquery) from ..
* From 에 들어가는 Subquery : 
ex) 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

* with절 :  with 임시테이블명 as ()
* SUBSTRING_INDEX(필드명, '~', 1or-1) : 1은 ~ 앞, -1은 ~뒤를 가져온다
* SUBSTRING(필드명, x, n) : x는 몇번째 자리부터 자를 껀지, n은 몇번째 자리까지 자를껀지
* Case : case when 필드명 조건 then '~' else '~' end