[스파르타코딩클럽]SQL 1주차

2021. 10. 24. 12:44SQL공부

데이터베이스란? 

여러 사람들이 같이 사용할 목적으로 데이터를 담는 통이라고 생각하면 되어요.

==================================

데이터베이스는 CRUD에 해당하는 기능을 지원해요.

C (Create): 데이터의 생성을 의미합니다
R (Read): 저장된 데이터를 읽어오는 것을 의미해요
U (Update): 저장된 데이터를 변경!
D (Delete): 저장된 데이터를 삭제하는 것을 의미해요

==================================

SQL은 Structured Query Language의 약자인데요, 
결국 데이터베이스에 요청 (Query)을 날려서 원하는 데이터를 
가져오는 것을 도와주는 언어라는 의미에요!

==================================

- checkins: 여러분이 강의실 들어오시며 남기는 '오늘의 다짐'이 들어있어요
- courses: 스파르타의 개설 강좌 정보가 들어있어요
- enrolleds: 유저별 강좌 등록정보가 들어있어요
- enrolleds_detail: 유저별 들을 수 있는 영상과, 들었는지 여부가 들어있어요
- orders: 주문 (수강등록) 정보가 들어있어요
- point_users: 유저별 포인트 점수가 들어있어요
- users: 유저 정보가 들어있어요

==================================

예1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!

SELECT *
from orders o
WHERE payment_method = 'kakaopay'

예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!

SELECT *
from point_users pu
WHERE point >= 5000

예3) orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!

SELECT *
from orders o
WHERE course_title = '앱개발 종합반' and payment_method = 'CARD'

==================================

[퀴즈] 포인트가 20000점보다 많은 유저만 뽑아보기!

SELECT *
from point_users pu
WHERE point > 20000

[퀴즈] 성이 황씨인 유저만 뽑아보기

SELECT *
from users u
WHERE name = '황**'

[퀴즈] 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기!

SELECT *
from orders o 
WHERE course_title = "웹개발 종합반" AND payment_method = "CARD"

==================================

쿼리 작성 전 팁

1) show tables로 어떤 테이블이 있는지 살펴보기
2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 쿼리 날려보기
3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
4) 테이블을 찾았다! 조건을 걸 필드를 찾기
5) select * from 테이블명 where 조건 이렇게 쿼리 완성!

==================================

- '같지 않음' 조건은 != 로 걸 수 있습니다.

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 orders o 
WHERE email LIKE '%daum.net'

- where email like 'a%': email 필드값이 a로 시작하는 모든 데이터
- where email like '%a' email 필드값이 a로 끝나는 모든 데이터
- where email like '%co%' email 필드값에 co를 포함하는 모든 데이터
- where email like 'a%o' email 필드값이 a로 시작하고 o로 끝나는 모든 데이터

[퀴즈] 결제수단이 CARD가 아닌 주문데이터만 추출해보기

SELECT *
from orders o
WHERE payment_method != "CARD"

[퀴즈] 20000~30000 포인트 보유하고 있는 유저만 추출해보기

SELECT *
from point_users pu 
WHERE point BETWEEN 20000 AND 30000

[퀴즈] 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기

SELECT *
from orders o 
WHERE email LIKE "s%com"

[퀴즈] 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출해보기

SELECT *
from users u 
WHERE email LIKE "S%COM" AND name="이**"

==================================

 일부 데이터만 가져오는 Limit이라는 기능이 있습니다.

select * from orders 
where payment_method = "kakaopay"
limit 5;

중복 데이터는 제외하고 가져오기: Distinct

select distinct(payment_method) from orders;

몇 개인지 숫자 세보기: Count

select count(*) from orders

[응용] Distinct와 Count를 같이 써보기

select distinct(name) from users;

==================================

에러를 만나도 혼자서 해결하려는 습관을 기르자

==================================

[퀴즈] Select 쿼리문, Where 절 연습하기

[성이 남씨인 유저의 이메일만 추출하기]

SELECT email
from users u 
WHERE name="남**"


[퀴즈] Where 절과 자주 같이쓰는 문법 연습하기

<Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기>

SELECT *
from users u 
WHERE updated_at BETWEEN "2020/07/12" AND "2020/07/14"
AND email LIKE "%gmail.com"


[퀴즈] 이외 유용한 문법 연습하기

SELECT COUNT(*)
from users u 
WHERE updated_at BETWEEN "2020/07/12" AND "2020/07/14"
AND email LIKE "%gmail.com"


숙제: naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 
결제는 kakaopay로 이뤄진 주문데이터 추출하기

SELECT *
from orders o 
WHERE email LIKE "%naver.com"
AND course_title = "웹개발 종합반"
AND payment_method = "KAKAOPAY"