[엑셀보다 쉬운 SQL] 1주차 강의노트
* 해당 자료는 스파르타코딩 엑셀보다 쉬운 SQL 수업 강의를 정리한 겁니다. 스파르타에서 제공한 데이터베이스를 사용했습니다.
수업 목표
- 데이터베이스(DB)와 SQL이 왜 필요한지 이해한다.
- DB에서 데이터를 가져오는 기초적인 문법인 Select와 Where문을 이해한다.
- 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.
Intro
SQL(Structured Query Language)이 뭐야?
- 데이터베이스에 요청 (Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어
- 쿼리 = 질의. 즉, 데이터베이스에 명령을 내리는 것
- 데이터를 가져오는 명령어를 작성하는 것을 'SQL 쿼리를 작성한다' 라고 함
SQL이 왜 필요할까?
- 편리성! 데이터를 읽어오는 과정인 "R (Read)"를 엄청나게 편하게 만들어준다.
프로그램 설치
SQL과 데이터베이스 살펴보기
- 실행은 command + enter(mac) 또는 ctrl + enter(window)
- 어떤 테이블(like 엑셀 시트)에서 어떤 필드(각 열의 범주)를 갖고 올 것인가!
- 먼저 show tables로 어떤 테이블이 있는지 살펴보기!
- *은 모든 필드
문법의 종류
1) Select 쿼리문
- 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미
- 모든 쿼리문에는 Select가 들어간다.
- Select 쿼리문의 구성 요건 : [1]어떤 테이블에서 [2]어떤 필드의 데이터를 가져올지
2) Where 절
select * from orders
where payment_method = "kakaopay";
- orders 테이블에서 payment_method가 kakaopay인 것만 가져와줘! (특정 조건에 따라 뽑아내기)
- kakaopay를 필드명이나 테이블명이 아닌 문자열로 인식시키기 위해 " " 사용
- 여러 조건을 걸어줄 때는 and를 넣어서 조건을 계속 추가해주면 됨
3) Where 절과 자주 같이쓰는 문법
- 같지 않음 != (!이 not을 의미)
- 범위는 between
select * from orders
where created_at between "2020-07-13" and "2020-07-15"
- 포함은 in ()
- 패턴은 like '% ~' 이때, %는 나머지는 상관없고 이걸 포함한 모든 데이터!
- where email like 'a%' : email 필드값이 a로 시작하는 모든 데이터
- where email like '%a' : email 필드값이 a로 끝나는 모든 데이터
- where email like '%co%' : email 필드값에 co를 포함하는 모든 데이터
- where email like 'a%o' : email 필드값이 a로 시작하고 o로 끝나는 모든 데이터
4) 이외의 유용한 문법
4-1. limit
- 데이터 일부만 가져오기. 정보가 너무 많을 때 몇 개만 조회할 수 있게 만드는 문법
- 쓸데없이 다 로딩하지 않아도 됨
4-2. distinct
- 중복 제거하고 보기
select distinct(payment_method) from orders
- orders 테이블 > payment_method 필드 > 범주 구분만 남기기
4-3. count
- 숫자 세기
select count(*) from orders
where payment_method = '카카오페이'
- orders 테이블 전체 행의 개수
- 그 중에서 payment_method가 카카오페이인 것의 개수
4-4. distinct와 count 동시에 사용하기
select count(distinct(name)) from users
- users 성씨의 개수
예제
1) Select 쿼리문, where절 연습 - 성이 남씨인 유저의 이메일 추출하기
select email from users
where name = '남**'
2) where절과 자주 쓰는 문법 연습 - gmail을 사용하는 2020/07/12~14에 가입한 유저 추출
select * from users
where email like '%gmail%'
and created_at between "2020-07-12" and "2020-07-14"
3) 이외 유용한 문법 연습 - Gmail을 사용하는 2020/07/12~14에 가입한 유저의 수를 세기
select count(*) from users
where email like '%gmail.com'
and created_at between "2020-07-12" and "2020-07-14"
4) naver 이메일을 사용하면서 웹개발 종합반을 신청했고, 결제는 kakaopay로 이뤄진 주문데이터 추출하기
select * from orders
where email like '%naver.com'
and course_title = "웹개발 종합반"
and payment_method = "kakaopay"
회고
KEEP | 답지 보기 전에 혼자 풀어보기. 넉넉히 시간을 들여야 한다. |
PROBLEM | 노트 필기에 너무 몰입하지 말자. 주객전도가 될 수 있다! |
TRY | 실전용 자료로 응용해보기 |