해달책방

스파르타코딩클럽 SQL 개발일지 Day1 본문

카테고리 없음

스파르타코딩클럽 SQL 개발일지 Day1

SEA OTTER'S BOOKSHOP 2022. 8. 17. 00:15

매주 자신의 진도 수준을 게임처럼 파악할 수 있다. 진도가 늦으면? 공룡 르탄이에게 먹힐 수도!

 

● SQL(Structured Query Language)이란?

주문 데이터가 많아지면서 엑셀이 버거워지기 시작했을 때, SQL을 이용해보자!

여러 사람이 작업하다가 '엑셀 원본 열고 계신 분 누구실까요? 닫아주세요' 한 기억이 있는가?

SQL은 데이터베이스에 저장한 정보를 충돌없이 끌어와 분석가능하기 때문에 빠르고 오류가 없다.

 

분석해야 할 주문이 50만건 100만건이 넘어간다면 SQL은 필수!

 

스파르타 코딩클럽에서는 SQL의 4가지 기능 중 읽기(Read)에 집중!

C(create) / R(read) / U(update) / D(delete)

 

● 1주차 핵심 명령어 select* from where 테이블명

자세한 내용은 스파르타 코딩클럽 강의를 들으면 알 수 있어서,

강의 중에 헷갈렸던 코드를 분석해보려고 함

 


select * from users
where email like '%gmail.com'


보통 '문자' 코드 앞에는 = 가 붙지만 테이블명 like 뒤에는 붙지 않음

 

 


select email from users
where created_at between '2020-07-12' and '2020-07-14'
and email like '%@gmail.com'


2020년 7월 12일부터 2020년 7월 13일에 가입하고

이메일이 gmail.com인 사람의 주문데이터 중 email만 보이게 하라는 의미

13일까지인데 14일로 끝을 낸 이유는 14시 00분으로 설정해야 13시 59분까지의 데이터가 나오기 때문

 

 


select count(email) from users
where created_at between '2020-07-12' and '2020-07-14'
and email like '%@gmail.com'


2020년 7월 12일부터 2020년 7월 13일에 가입하고

이메일이 gmail.com인 사람의 주문데이터 중 gmail.com의 갯수를 세는 명령

 

 

select count(*) from users
where created_at between '2020-07-12' and '2020-07-14'
and email like '%@gmail.com'

 

라고 쓰는게 정석인 듯

 

 


select * from orders
where email like '%@naver.com'
and course_title ='웹개발 종합반' and payment_method ='kakaopay'


이메일이 naver.com이면서

웹개발 종합반을 듣고 kakaopay로 결제한 주문 불러오기

 

 

 


select * from checkins

where week in (2,3)


checkins 테이블에서 week필드 중 2,3주차인 건들만 포함하기

 

 

 


select * from orders

where payment_method = 'kaokaopay'

limit 5


orders 테이블에 행이 너무 많아서 버벅일 경우

5행만 예시로 어떻게 생긴 테이블인가 보고 싶을 때 limit 5라고 씀

 

 


select * from orders

where payment_method != 'kaokaopay'


orders 테이블에서 카카오페이가 아닌 결제수단만 불러오기

!= 는 아니다 라는 뜻

 

 


select distinct(payment_method) from orders


orders테이블의 payment_method 필드에 있는 여러 결제수단 e.g) kakaopay, CARD, cash, taxbill 등 여러 txt의 중복을 제거하고 각각 하나씩만 볼 수 있도록 distinct(필드) 쿼리 입력

 

 


select count(*) from orders


orders의 행(주문 수)을 세어줌

count(*) 이용 = 286개

 


select count(*) from orders

where payment_method = 'kakaopay'


orders 테이블의 전체 주문 수 286개 중 kakaopay 결제로 한 주문은 50여개

 

 


select count(distinct(name)) from users


users 테이블에서 이름의 중복을 제거한 겹치지 않는 이름의 총 갯수 count

 

 

 

 

생각보다 어렵지 않다

다만 우리회사에 데이터베이스의 환경이 따라갈 수 있으려나 걱정이 될 따름...