My SQL Study - (1)

Geun Bo Kim·2023년 3월 23일
0

My SQL

목록 보기
1/6
post-thumbnail

My SQL 공부 Start

1.My SQL에 대해서 알아보자

💡 데이터베이스(DB)란?

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

👉원하는대로 데이터를 저장하고 사용하기 위해서는 다양한 기능이 있어야한다. 그래서 통상적으로, 모든 데이터베이스는 CRUD에 해당하는 기능을 지원.

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

💡 SQL은 무엇이고, 왜 필요할까?

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

SQL은 데이터를 읽어오는 과정인 "R (Read)"를 엄청나게 편하게 만들어줍니다. 그리고, 데이터를 손쉽고 깔끔하게 정리/분석하는 기능도 지원

2.Select 쿼리문

💡 Select 쿼리문이란?

👉쿼리(Query)문이란? 쿼리는 질의를 의미하죠. 데이터베이스에 명령을 내리는 것을 의미합니다.

여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미입니다.

  • select(셀렉해라) *(모든필드) from(어디서부터)
  • ex)select * from orders

3.Where 절

💡 Where 절이란?

👉Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미

예1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!
예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!
예3) orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!

답1)SELECT from orders
where payment_method = 'kakaopay'
(orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와)
답2)SELECT
from point_users
WHERE point >= 5000
(point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와)
답3)SELECT * from orders
WHERE course_title = '앱개발 종합반' and payment_method = 'CARD'
(orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와)

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

4.문법 사용

📚 Where절과 자주 같이 쓰는 문법들

- 같지 않음: !=

ex)select * from orders
where course_title != '웹개발 종합반'/ (웹개발 종합반과 다른걸 보여줘)

- 범위 조건: between

ex)select * from orders
where created_at between '2020-07-13' and '2020-07-15' /(20년7월13일부터 20년7월15일 전까지 보여줘)

- 포함 조건: in

ex)select * from checkins
where week in (1, 3) / (week가 1또는 3인것을 가져와)

- 패턴(문자열규칙) 조건 : like

ex)select from users
where email like '%daum.net' /(다음 이메일 사용 유저만 보여줘)
%는 앞이나 중간에 뭐가있는지 상관없이 범위지정 ex) a%t : a부터 상관없이 t로 끝나는 데이터

  • 🧐 tip : Like는 패턴으로 조건을 거는 문법으로, 사용법이 아주 다양하다.

1) where email like 'a%': email 필드값이 a로 시작하는 모든 데이터
2) where email like '%a' email 필드값이 a로 끝나는 모든 데이터
3) where email like '%co%' email 필드값에 co를 포함하는 모든 데이터
4) where email like 'a%o' email 필드값이 a로 시작하고 o로 끝나는 모든 데이터
5)이 외에도 다양한 문법이 있어서 필요한것을 찾아쓰면됨('how to use like in sql' 구글링)

quiz1. 결제수단이 CARD가 아닌 주문데이터만 추출해보기
답: select * from orders
where payment_method !='CARD'

quiz2. 20000~30000 포인트 보유하고 있는 유저만 추출해보기
답: select * from point_users
where point between 20000 and 30000 / (숫자에는 ' ' 를 넣지않는다)

quiz3. 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기
답: select * from orders
where email like 's%com'

quiz4. 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출해보기
답: select * from users
where email like 's%com' and name = '이**'

📚 유용한 문법들

- imit: 테이블에 어떤 데이터가 들어있나 잠깐 보려고 들어왔는데, 데이터를 다 불러오느라 시간이 오래 걸리고 힘들때

ex)select * from orders
where payment_method = "kakaopay"
limit 5
(5개만 출력)

- distinct: 중복 데이터는 제외하고 가져올 때

ex)select distinct(payment_method) from orders

- count: 테이블에 데이터가 몇 개가 있는지 세야 할 때

ex)select count(*) from orders
where payment_method = 'kakaopay' / 결제수단이 '카카오페이' 인것은 몇 개인가?

- 응용 (distinct 와 count를 같이 쓰기)

ex) select count(distinct(name)) from users / 스파르타 회원들의 성(family name)씨가 몇개인가?

quiz1. 성이 남씨인 유저의 이메일만 추출하기
답: select email from users
where name = '남**'

quiz2. Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기
답: select * from users
where created_at between '2020-07-12' and '2020-07-14'
and email like '%gmail.com'

quiz3. Gmail을 사용하는 2020/07/12~13에 가입한 유저의 수를 세기
답: select count(*) from users
where created_at between '2020-07-12' and '2020-07-14'
and email like '%gmail.com'

*Main Quiz.

  • Naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기
    답: select * from orders
    WHERE email like '%naver.com'
    and course_title = '웹개발 종합반'
    and payment_method = 'kakaopay'
profile
미래는 개발이다

0개의 댓글