본 강의에서 데이터베이스까지는 다루지 않음
(관계형 데이터베이스, ERD, 스키마, 엔티티 등)
-> 보통 실무에서 기획자, 마케터, 주니어개발자들은 이미 설계된 db에서
데이터를 꺼내서 가져오는 부분만 사용하기 때문에. db자체를 설계하거나
넣어야하는 경우는 실무에서 많지 않다.
-> select문을 집중적으로 다룰 것이고, 반복적으로 써보면서 감과 원리를 익혀 나가는 것이 중요하다.
SQL이 왜 필요할까?
e.g. 음식점 사장이라면.. 주문내역중 어제 배달완료건 중 7,000원 음식 먹은 사람 뽑고싶어~
1) 방대한 양의 데이터를 저장할 수 있다.
2) 방대한 양의 데이터에서 내가 원하는 데이터를 신속하게 가져올 수 있다.
데이터베이스란?
여러 사람들이 같이 사용할 목적으로 데이터를 담는 통
통상적으로 모든 데이터베이스는 CRUD에 해당하는 기능을 지원
C(Create) : 데이터의 생성 e.g. 회원가입~ 회원정보 추가
R(Read) : 저장된 데이터를 읽어오는 것
U(Update) : 저장된 데이터를 변경
D(Delete) : 저장된 데이터를 삭제
-> 우리는 Read에 대해서만 배운다.
-> 실무에서 delete거의안함.. create나 update도 일부 권한을 가진 개발자만 함
1주차: Select, Where
2주차 : Group by, Order by
3주차 : join
4주차: ?
SELECT 문
테이블/필드
show tables (db의 테이블 전체 보기)
실행 단축키 : ctrl+enter
스파르타 데이터베이스 샘플 구성
- checkins: 강의실 들어오며 남기는 '오늘의 다짐'이 저장된 테이블
- courses: 스파르타의 개설 강좌 정보가 들어있는 테이블
- enrolleds: 유저별 강좌 등록정보 테이블
- enrolleds_detail : 유저별 수강 가능한 영상목록, 수강 여부가 저장된 테이블
- orders: 주문(수강등록) 정보가 들어있는 테이블
- point_users: 유저별 포인트 점수 테이블
- users: 유저정보 테이블
where절의 개념
조건을 걸어주는 문법
예시1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져오기
예시2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져오기
예시3) orders 테이블에서 주문한 강의가 앱개발 종합반이면서 결제수단이 카드인 데이터만 가져오기
tip
sql문 길어질수록 가독성 떨어지기 때문에 줄바꿈 잘 하기 (회사마다 rule이 있는 경우가 있음)
작은따옴표는 문자열을 지칭할때 반드시 붙여줘야함 (안붙이면 테이블이나 문법이나 필드니?)
퀴즈 풀어보기~
1) 포인트가 2만점보다 많은(초과) 유저만 뽑아보기
2) 성이 '황씨'인 유저만 뽑아보기
3) 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기
꿀팁
- 1) show tables로 어떤 테이블이 있는지 살펴보기
- 2) 제일 원하는 정보가 있을 거 같은 테이블에 select * from 테이블명 쿼리 날려보기
- 3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
- 4) 테이블을 찾았다! 조건을 걸 필드를 찾기
- 5) select * from 테이블명 where 조건 이렇게 쿼리 완성
Where절과 같이 쓰는 문법 배워보기
- 같지않음 : != (제외? except의 의미가 되는걸까나)
- 범위조건 걸기 : between ~ and ~
- 포함 조건 걸기 : in (~,~)
- 패턴(문자열 규칙) 조건 걸어보기 : like '%daum.net'
e.g. '다음' 이메일을 사용하는 유저만 보고싶어요
%는 뭐가 들어가든 상관이 없다는 의미
a로 시작해서 t로 끝난다 -> a%t
퀴즈
- 결제수단이 CARD가 아닌 주문데이터만 추출하기
- 20000~30000포인트 보유하고있는 유저만 추출해보기
- 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기
- 이메일이 s로 시자하고 com로 끝나면서 성이 이씨인 유저만 추출해보기
이 외 유용한 문법
- limit : 특정 개수만큼만 데이터를 가져올때 (진짜 데이터가 큰데, 난 미리보고싶을때)
- distinct : 중복되는 데이터 제거 (결제수단이 뭐있는지~ 중복빼고 볼때)
selcet distinct(payment_method) from orders - count : 몇개인지 개수 셔 ~
select count(*) from orders
distinct랑 count를 같이 쓰려면?
총 몇개의 성씨가있을까나?
count(distinct(name))
퀴즈~
- 성이 남씨인 유저의 이메일만 추출하기
- gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기
- 날짜도 따옴표 처리 필요~~ .. 시간은 상관업나봐
숙제
naver 이메일을 사용하면서 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진
주문 데이터 추출하기