스파르타/SQL

220303. 엑셀보다 쉬운 SQL 1주차 - Select, Where 쿼리문

h.단디 2022. 3. 3. 22:25

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로 이뤄진 주문데이터 추출하기