220303. 엑셀보다 쉬운 SQL 1주차 - Select, Where 쿼리문
k-credit 첫 수강신청엔 2개 신청이 가능하다고 해서 웹개발과 동시에 신청했지만 웹개발 수업에 밀려 그동안 듣지 못했다가 뒤늦게 듣는 중... 하하
본 강의는 DBeaver로 Sparta DB에 접속해서 진행됨
DB를 쌓는 목적은 '잘 저장하기 위해서'가 아니라 '잘 꺼내쓰기 위해서'임
모든 DB는 CRUD에 해당하는 기능을 지원하지만 본 수업에서는 잘 꺼내쓸 수 있게 Read만 다룸
SQL (Structured Query Language) : DB에 Query를 날려 원하는 데이터를 가져오는 것을 도와주는 언어
Select & Where 👉🏻 데이터를 불러오고(Select), 조건에 맞게 필터링(Where)
Select : 어떤 테이블에서 어떤 필드의 데이터를 가져올 것인가
Select __필드__ from __테이블__
테이블 : 엑셀 시트라고 생각하면 됨
필드 : 엑셀 시트 첫 행이라고 생각하면 됨
모든 필드를 불러오려면 '*' 쓰면 됨
Where : Select 쿼리문으로 가져올 데이터에 조건을 걸어줌
select 쿼리문과의 정렬은 회사마다 다르므로 어쨌든 그 전까진 한 가지 일관된 형태로 작성할 것.
여러 가지 조건 -> and / or 사용
문자열은 ' '로 감싸는 것 잊지 말기!
- [퀴즈] 포인트가 20000점보다 많은 유저만 뽑아보기!
- [퀴즈] 성이 황씨인 유저만 뽑아보기
- [퀴즈] 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기!
[쿼리 작성시]
1. show tables 로 어떤 테이블들이 있는지 살펴본 후
2. 원하는 정보가 있을 것 같은 테이블에 select * from _테이블명_
3. 2했는데 없다면 다른 테이블에서도 해보고
4. 맞는 테이블을 찾으면 조건을 걸 필드를 찾음
5. select * from _테이블명_ where 조건
[Where절 조건 걸 때 자주 쓰이는 문법]
1. 같지 않음 !=
SELECT * from orders
where course_title !='웹개발 종합반'
2. 범위 between and
SELECT * from orders
where created_at BETWEEN '2020-07-13' and '2020-07-15' // 날짜, 포인트 등
3. 포함 in ( )
SELECT * from checkins
WHERE week in (1,3) //week가 괄호 안의 숫자인 데이터를 뽑아줘
4. 패턴 (문자열 규칙) like '__%__'
SELECT * from users
where email like '%daum.net' //%에 뭐가 들어가든 daum.net로 끝나는거 뽑아줘
- [퀴즈] 결제수단이 CARD가 아닌 주문데이터만 추출해보기
- [퀴즈] 20000~30000 포인트 보유하고 있는 유저만 추출해보기
- [퀴즈] 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기
- [퀴즈] 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출해보기
[이외에 자주 쓰이는 문법]
1. limit 진짜 큰 테이블이 어떻게 생겼나 단순히 조회해볼 때 사용(실무에서 유용하게 많이 쓰임)
select * from orders
where payment_method = 'kakaopay'
limit 5 //조건에 해당하는 데이터 5개만 보여주라
2. distint 중복되는 데이터값 제거하고 조회할 때 사용
select distinct(payment_method) from orders // 결제 방법에 뭐뭐 있는지 중복없이 보여줘
3. count 조건에 해당하는 데이터 갯수 몇 개인지 세어볼 때 사용
select count(*) from orders
where payment_method = 'kakaopay' //카카오페이로 결제한 주문건 몇개야?
응용) distint & count 같이 쓰기. -> 단계적으로 하는 습관!
select name from users //users에서 name 데이터 다 가져온 후
select distinct(name) from users //중복되는 데이터 제거하고
select count(distinct(name)) from users // 개수 세기
에러와 직면하여 모르는게 생겼을 때 바로 답지를 찾지 말고 찬찬히 에러문을 읽어보고 혼자서 고민해보려고 노력할 것!
마무리
- [퀴즈] 성이 남씨인 유저의 이메일만 추출하기
- [퀴즈] Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기
- [퀴즈] Gmail을 사용하는 2020/07/12~13에 가입한 유저의 수를 세기
1주차 숙제
[숙제] naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기