SQL #1

김성훈·2022년 12월 13일
1

SQL

목록 보기
1/3
post-thumbnail
  • SQL 학습 과정 중 4주차에 '재밌다'고 느낀다.
    - '반복적' 학습이 핵심 !

나의 중장기 목표 '창업'에 있어서 SQL은 필수적 !

  • 방대한 양의 데이터베이스를 다룰 수 있다.
    노션 링크
  • C (Create): 데이터의 생성을 의미합니다
  • R (Read): 저장된 데이터를 읽어오는 것을 의미해요
  • U (Update): 저장된 데이터를 변경!
  • D (Delete): 저장된 데이터를 삭제하는 것을 의미해요

DBeaver

실행

  1. 'Connect to a database' (플러그 모양 클릭)

  2. 'MySQL' 클릭 후 '다음'

  3. Server Host : -----(비공개)
    Database : sparta
    Username : ----
    Password : ----


쿼리문 학습

SELECT

SHOW tables; #테이블 보기
SELECT * from orders 
SELECT order_no, created_at, user_id, email  from orders

WHERE

# orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!
SELECT * from orders
WHERE payment_method = 'kakaopay'

# point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!
SELECT * from point_users
WHERE point >= 5000

#  orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!
SELECT * from orders
WHERE course_title = '앱개발 종합반' and payment_method = 'CARD'

퀴즈

  • 포인트가 20000점보다 많은 유저만 뽑아보기!
SELECT * FROM point_users 
WHERE `point` > 20000;
  • 성이 황씨인 유저만 뽑아보기
SELECT * FROM users
WHERE name = '황**'
  • 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기!
SELECT * FROM orders 
WHERE course_title = '웹개발 종합반' and payment_method = 'CARD';

WHERE 절과 자주 함께 쓰이는 문법

  • 같지 않음 ' != '
    '웹개발 종합반'을 제외하고 주문데이터를 보고 싶어요
SELECT * FROM orders 
WHERE course_title != '웹개발 종합반'
  • '범위' : ' between '
    7월 13일, 7월 14일의 주문데이터만 보고 싶어요
SELECT * FROM orders
WHERE created_at BETWEEN '2020-07-13' and '2020-07-15'
  • '포함' : ' in '
    1, 3주차 사람들의 '오늘의 다짐' 데이터만 보고 싶어요
SELECT * FROM checkins 
WHERE week in (1,3)
  • '패턴' : ' like '
    다음 (daum) 이메일을 사용하는 유저만 보고 싶어졌어요. 어떻게 하죠?
SELECT * FROM users 
# 앞에 뭐가 들어가든 뒤에 daum.net 로 끝나는 것 !
WHERE email like '%daum.net' 
# a로 시작해서 t 로 끝나는 것 !
WHERE email like 'a%t' 

퀴즈

  • 결제수단이 CARD가 아닌 주문데이터만 추출해보기
SELECT * from orders
WHERE payment_method != 'CARD'
  • 20000~30000 포인트 보유하고 있는 유저만 추출해보기
SELECT * from point_users
WHERE point BETWEEN 20000 and 30000
  • 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기
SELECT * from users
WHERE email LIKE 's%com'
  • 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출해보기
SELECT * from users
WHERE email LIKE 's%com' and name = '이**'

이외 다른 함수

Limit ( 파이썬의 head() 함수와 비슷 )

SELECT * from orders
WHERE payment_method = 'kakaopay'
limit 5;

Distinct ( 중복 제거 )

SELECT DISTINCT payment_method from orders

Count

SELECT count(*) from orders # 286개
WHERE payment_method = 'kakaopay' # 56개

Count & Distinct

SELECT COUNT(DISTINCT (name)) FROM users # 54개

퀴즈

  • 성이 남씨인 유저의 이메일만 추출하기
SELECT * FROM users 
WHERE name = '남**'
  • Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기
SELECT * FROM users
WHERE updated_at BETWEEN '2020-07-12' and '2020-07-14' 
	  and email LIKE '%gmail.com'
  • Gmail을 사용하는 2020/07/12~13에 가입한 유저의 수를 세기
SELECT COUNT(*) FROM users 
WHERE updated_at BETWEEN '2020-07-12' and '2020-07-14' 
	  and email LIKE '%gmail.com';
  • naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기
SELECT * FROM orders
WHERE course_title LIKE '웹개발%' 
and payment_method = 'kakaopay' and email LIKE '%naver.com'
profile
I wanna be your good partner

0개의 댓글