1~4주차 배울 순서
- 1주차: Select, Where
- 2주차: Group by, Order by
- 3주차: Join
- 4주차: Subquery 그 외
강의 자료
[내일배움단] 엑셀보다 쉬운 SQL - 1주차
매 주차 강의자료 시작에 PDF파일을 올려두었어요!
teamsparta.notion.site
1. 1주차 오늘 배울 것
데이터 베이스(DB)와 SQL이 왜 필요할까?
데이터베이스에 데이터를 저장한다?
- 엑셀로 관리해도 된다.
- 하지만 데이터가 너무 많아지면 엑셀 시트가 느려지고, 문제가 발생한다.
- 따라서 데이터베이스에 모든 주문 데이터를 저장한다.
데이터베이스의 이점
- 필요한 데이터만 불러와서 작업을 할 수 있으므로 속도가 빠르다.
- 충돌이 생겼을 경우, 에러를 띄우는 기능을 추가하여 충돌로 생기는 문제를 해결할 수 있다.
- 아주 작은 회사에서는 불필요하겠으나, 많은 양의 데이터를 효과적으로 저장/수정/사용하려면 데이터베이스는 필요하다.
데이터베이스 기초 개념
데이터베이스
- = 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통
- CRUD 기능 지원
- C (Create) : 데이터 생성
- R (Read) : 저장된 데이터 읽어오기
- U (Update) : 저장된 데이터 변경
- D (Delete) : 저장된 데이터 삭제
SQL이 왜 필요할까?
SQL
- 데이터베이스에 연결하기 위해 약속된 규칙, 언어
2. 필수 프로그램 설치 안내
DBeaver
설치
데이터베이스 연결
1. DBeaver 실행
2. 플러그 모양 클릭
3. MySQL 선택 -> 다음
4. Server Host, Database, Username, Password를 입력하고, 'Test Connection' 버튼 클릭
- Server Host: http://sparta.cbt9ceqjwlr9.ap-northeast-2.rds.amazonaws.com/
- Database: sparta
- Username: sparta_student
- Password: sparta99
5. Driver 설치
6. 연결 완료. 확인 버튼 클릭
3. SQL과 데이터베이스 살펴보기
Select 쿼리문
쿼리(Query)문이란?
- 쿼리 = 질의
- 데이터베이스에 명령을 내리는 것을 의미함
Select 쿼리문이란?
- '데이터를 선택해서 가져오겠다'는 의미
- 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지
테이블 & 필드
- 테이블: orders (=엑셀 시트)
- 필드: order_no, created_at, course_title, user_id, payment_method, email
Select 쿼리문 연습
DBeaver을 실행한다.
테이블 보기
show tables;
orders 테이블의 데이터 가져와보기
select * from orders;
orders 테이블의 특정 필드만 가져와보기
select order_no, created_at, user_id, email from orders;
데이터베이스 구조
- checkins: 여러분이 강의실 들어오시며 남기는 '오늘의 다짐'이 들어있어요
- courses: 스파르타의 개설 강좌 정보가 들어있어요
- enrolleds: 유저별 강좌 등록정보가 들어있어요
- enrolleds_detail: 유저별 들을 수 있는 영상과, 들었는지 여부가 들어있어요
- orders: 주문 (수강등록) 정보가 들어있어요
- point_users: 유저별 포인트 점수가 들어있어요
- users: 유저 정보가 들어있어요
4. Select, Where 절 등 문법 연습해보기
Select, Where 절
Where 절이란?
- Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미
- 예1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!
select * from orders
where payment_method = 'kakaopay'
- 예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!
select * from point_users
where point > 5000
- 예3) orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!
select * from orders
where course_title = '앱개발 종합반' and payment_method = 'CARD'
❗문자열에 작은 따옴표(')로 감싸주는 것 잊지 말기
Where 절 사용하기 팁
- show tables로 어떤 테이블이 있는지 살펴보기
- 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 쿼리 날려보기
- 원하는 정보가 없으면 다른 테이블에도 2.를 해보기
- 테이블을 찾았다! -> 조건을 걸 필드를 찾기
- select * from 테이블명 where 조건 이렇게 쿼리 완성!
Quiz
Quiz 1) 포인트가 20000점보다 많은 유저만 뽑아보기
select * from point_users
where point > 20000
Quiz 2) 성이 황씨인 유저만 뽑아보기
select * from users
where name = '황**'
Quiz 3) 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기
select * from orders
where course_title = '웹개발 종합반' and payment_method = 'CARD'
Where 절과 자주 같이 쓰는 문법
같지 않음 ➡️ !=
ex) 웹개발 종합반 제외한 모든 데이터 보기
select * from orders
where course_title != '웹개발 종합반'
범위 ➡️ between and
ex) 7월 13일, 7월 14일의 주문 데이터만 보기
select * from orders
where created_at between '2020-07-13' and '2020-07-15'
포함 ➡️ in
ex) 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보기
select * from checkins
where week in (1,3)
패턴(문자열 규칙) ➡️ like
ex) 다음 (daum) 이메일을 사용하는 유저만 보기
select * from users
where email like '%@daum%'
❗%: 아무 문자나 들어가도 상관없음을 의미
일부 데이터만 가져오기 ➡️ limit
❗DB에 데이터가 많은 경우 유용함
ex) 5개 데이터만 가져오기
select * from users
where payment_method = 'kakaopay'
limit 5
중복 데이터는 제외하고 가져오기 ➡️ distinct
ex) payment_method 중복 제외하고 보기
select distinct(payment_method) from orders
몇 개인지 숫자 세보기 ➡️ count
ex) 특정 데이터 개수가 몇개인지 보기
select count(payment_method) from orders
-> 286개
Quiz
Quiz 1) 결제수단이 CARD가 아닌 주문 데이터만 추출해보기
select * from orders
where payment_method != 'CARD'
Quiz 2) 20000~30000 포인트 보유하고 있는 유저만 추출해보기
select * from point_users
where point between 20000 and 30000
Quiz 3) 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기
select * from users
where email like 's%com'
Quiz 4) 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출해보기
select * from users
where email like 's%com' and name = '이**'
Quiz 5) 스파르타 회원 분들의 성(family name)씨가 몇개인지 보기
select count(distinct(name)) from users
-> 54개
5. 같이 삽질해보기
- 에러 메시지를 보고 원인 파악하여 문제를 해결하자.
ex 1)
- where 절에 있는 kakaopay 라는 컬럼이 알려지지 않았다.
- 즉, kakaopay라는 글자가 컬럼으로 인식되어 발생한 에러인 것.
ex 2)
- 'name = "이**"' 에서 에러가 발생했다.
- and나 or로 연결해주지 않은 것.
6. 퀴즈 풀어보기
Quiz 1) 성이 남씨인 유저의 이메일만 추출하기
select email from users
where name = '남**'
Quiz 2) Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기
select * from users
where email like '%@gmail%'
and created_at BETWEEN '2020-07-12' and '2020-07-14'
Quiz 3) Gmail을 사용하는 2020/07/12~13에 가입한 유저의 수를 세기
select count(*) from users
where email like '%@gmail%'
and created_at BETWEEN '2020-07-12' and '2020-07-14'
7. 끝 & 숙제 설명
HW) naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기
select * from orders
where email like '%@naver%'
and course_title = '웹개발 종합반'
and payment_method = 'kakaopay'
'Education' 카테고리의 다른 글
[엑셀보다 쉬운 SQL] week3: Join (0) | 2022.03.23 |
---|---|
[엑셀보다 쉬운 SQL] week2: Group by, Order by (0) | 2022.03.22 |
[개발스터디] week4: React Quiz (0) | 2021.07.06 |
[개발스터디] week3: Next.js로 서버 만들기 / React.js (0) | 2021.06.30 |
[웹개발종합반] 강의을 마치며 (0) | 2021.06.27 |