SELECT * FROM orders
where payment_method = 'kakaopay'
and course_title ="앱개발 종합반"
and email like '%naver.com'
[수업 목표]
- 데이터베이스(DB)와 SQL이 왜 필요한지 이해한다.
- DB에서 데이터를 가져오는 기초적인 문법인 Select와 Where문을 이해한다.
- 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.
[목차]
<aside> 💡 모든 토글을 열고 닫는 단축키 Windows : Ctrl + alt + t Mac : ⌘ + ⌥ + t
</aside>
01. 1주차 오늘 배울 것
-
- 환영합니다!
- 아쉽게도, 이런 개념이 실무에서 그렇게 도움이 되지 않았습니다.
- 자, 이제 본격적으로 시작해볼까요?
- 저는, 이러한 학습법이 SQL을 잘하게 되기까지의 지름길이라 확신합니다.
- <aside> 👉 이 수업은
- 복잡한 개념을 모두 이해하는 방식이 아니라, 일단 반복적으로 써보면서 감과 원리를 익혀가는 것이 중요하다고 느꼈습니다.
- 예) 관계형 데이터베이스, ERD, 스키마, 엔티티 등..
- <aside> 👉 개인적인 경험
- 저는 '엑셀보다 쉬운 SQL' 튜터를 맡은 이범규입니다. 여러분들과 4주동안 SQL을 함께 연습할 생각을 하니 가슴이 두근두근하네요.
-
- 데이터베이스(DB)와 SQL이 왜 필요할까?
-
- 내가 배달음식점의 사장이라면?
- 필요한 데이터만 불러와서 작업할 수 있어서 속도는 빨라졌고
- 충돌이 생겼을 경우 에러를 띄우는 기능을 추가해서 충돌로 생기는 문제도 사라졌어요.
- 아주 작은 회사에서는 불필요하겠지만, 많은 양의 데이터를 효과적으로 저장/수정/사용하기 위해서는 데이터베이스가 필요합니다. 그래서 거의 모든 회사의 데이터는 데이터베이스에 저장되어 있어요.
- 이 외에도, 데이터베이스가 사용자에게 주는 이점은 정말 많답니다! 오늘은 첫 날이니, 이 정도만 살펴보아요.
- <aside> 😎 고민을 하다가, 데이터베이스에 모든 주문데이터를 저장하기 시작했어요.
- </aside>
- <aside> ❗ 그런데 문제가 생겼어요! 데이터가 많아지면서 엑셀 시트가 점점 느려지고, 여러사람이 작업하는 내용이 충돌하면서 취소된 주문에 배달이 나가는 등의 문제가 생겨나기 시작했어요.
- </aside>
- <aside> 😎 그런데 어느날, 장사가 엄청 잘 되기 시작했어요! 이제는 혼자서는 힘들어져서, 주문을 기록해주고 일을 도와줄 직원 여러명을 채용했어요.
- </aside>
-
- 데이터베이스 기초 개념
- <aside> 😎 점점 어려워진다고요? 괜찮아요! 이 강의에서는, 저장된 데이터를 읽어오는 "R (Read)"에 대해서만 배울 것이랍니다.
- C (Create): 데이터의 생성을 의미합니다 R (Read): 저장된 데이터를 읽어오는 것을 의미해요 U (Update): 저장된 데이터를 변경! D (Delete): 저장된 데이터를 삭제하는 것을 의미해요
- </aside>
-
- SQL이 왜 필요할까?
- </aside>
- <aside> 👉 SQL은 Structured Query Language의 약자인데요, 결국 데이터베이스에 요청 (Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어라는 의미에요!
- 열심히 저장된 데이터, 잘 가져다 써야겠죠?
-
- 1~4주차에 배울 순서!
- 1주차: Select, Where</aside>
- <aside> 👉 데이터를 불러오고 (Select), 조건에 맞게 필터링 하는 것 (Where)!
- 2주차: Group by, Order by</aside>
- <aside> 👉 데이터를 범주에 따라 묶어서 통계치를 구하고 (Group by), 정렬하는 것 (Order by)!
- 3주차: Join</aside>
- <aside> 👉 여러 데이터를 합쳐서 분석하기 (Join), 더 쉽고 깔끔하게 원하는 데이터를 얻기 (Subquery)
- 4주차: Subquery, 그 외</aside>
- <aside> 👉 실전의 데이터는 생각보다 잘 정리되어 있지 않답니다! 데이터 분석을 위해서 데이터를 원하는 형태로 정리하는 방법을 배워요.
02. 필수 프로그램 설치
-
- DBeaver (다운로드 링크)
- (←눌러보기) DBeaver 다운로드 하기
- 다운로드 링크를 클릭하세요.
- Windows를 사용하고 계시면 (installer), Mac을 사용하고 계시면 (dmg) 라고 되어있는 링크를 클릭하여 DBeaver를 다운로드 받은 후 설치까지 마무리해주세요.
- </aside>
- <aside> 👉 '계속' 버튼을 눌러서 진행해주시면 됩니다!
- (←눌러보기) 스파르타 데이터베이스 연결 방법 참고
- 설치한 DBeaver를 실행합니다
- 좌측 상단 플러그 모양의 아이콘을 클릭합니다
- 새 창이 뜨면, MySQL을 선택하고 '다음' 버튼을 누릅니다
- 아래와 같이 정보를 입력하고 좌측 하단 'Test Connection' 버튼을 클릭합니다.Username: sparta_student Password: sparta99
- </aside>
- <aside> 👉 Server Host: sparta.cbt9ceqjwlr9.ap-northeast-2.rds.amazonaws.com Database: sparta
- 만약 Driver가 설치되어있지 않으면 아래와 같은 창이 뜹니다. 다운로드 버튼을 눌러줍니다.
- Connection Test 결과에 'Connected'라고 뜨면, 확인 버튼을 누르고 완료 버튼을 눌러줍니다.
- </aside>
03. SQL과 데이터베이스 살펴보기
<aside> 👉 시작하기 전에, sparta_week1.sql 이라는 파일을 먼저 만들어봅시다!
</aside>
-
- Select 쿼리문의 개념
- 4주동안 배울 것은 데이터를 잘 뽑아내는 것이죠? 따라서, 수업의 모든 쿼리문에는 Select가 들어갑니다.
- Select 쿼리문은 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성됩니다.
- 테이블과 필드가 뭘까요?
- 테이블: orders라는 엑셀 시트명 보이시죠? 테이블은 데이터가 담긴 엑셀 시트와 동일합니다. 이런 형태의 값이 데이터베이스에 담기면, orders라는 이름의 테이블이 되겠죠.
- 필드: order_no, created_at, course_title, user_id, payment_method, email 각각이 필드입니다.
- </aside>
- </aside>
- 여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미입니다.
-
- Select 쿼리문 연습
- 이런 화면이 나오면 성공!
- [코드스니펫] - 스파르타 데이터베이스의 테이블 보기
- 아래와 같은 화면이 나오면 성공!
- </aside>
- <aside> 👉 checkins, courses, enrolleds ... 라는 이름의 테이블들이 있다는 이야깁니다!
- show tables;
- [코드스니펫] - orders 테이블의 데이터 가져와보기
- 요런 데이터가 나오면 성공!
- select * from orders;
- [코드스니펫] - orders 테이블의 특정 필드만 가져와보기
- 마찬가지로, 이런 데이터가 나오면 성공!
- select created_at, course_title, payment_method, email from orders;
- </aside>
- </aside>
- </aside>
-
- 스파르타 데이터베이스의 구조
- checkins: 여러분이 강의실 들어오시며 남기는 '오늘의 다짐'이 들어있어요
- courses: 스파르타의 개설 강좌 정보가 들어있어요
- enrolleds: 유저별 강좌 등록정보가 들어있어요
- enrolleds_detail: 유저별 들을 수 있는 영상과, 들었는지 여부가 들어있어요
- orders: 주문 (수강등록) 정보가 들어있어요
- point_users: 유저별 포인트 점수가 들어있어요
- users: 유저 정보가 들어있어요
- (소곤소곤) 직접 select * from 테이블명 이렇게 쿼리를 날려보셔도 돼요!
- </aside>
- </aside>
04. Select, Where 절 등 문법 연습해보기
-
- Where 절의 개념
- 예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!
- </aside>
-
- Select 쿼리문에 Where 절 함께 써보기
- 쿼리를 직접 써보면서 이해해볼까요? 일단 따라 써 봅니다!
- 아주 직관적이죠? "orders 테이블에서 payment_method가 kakaopay인 것만 가져와줘!" 라는 의미랍니다.
- 만약 "kakaopay"가 아니라 kakaopay라고 쓰면?
- 당연히 에러가 납니다! 🥳
- [Unknown column 'kakaopay' in 'where clause'] 에러문구를 천천히 읽어볼까요?
- </aside>
- </aside>
- <aside> 👉 Q) 잠깐! 왜 kakaopay가 아니라 "kakaopay"라고 쓰나요? A) kakaopay를 필드명이나 테이블명이 아닌 문자열로 인식시키려는거에요.
- select * from orders where payment_method = "kakaopay";
- 여러 조건을 걸어주기 위해서는? 이것도 우선 따라 써 봅시다!
- 마찬가지로 엄청 직관적이죠? and 를 넣어서 원하는 조건을 계속 추가해주면 됩니다!
- select * from orders where course_title = "앱개발 종합반" and payment_method = "kakaopay";
- </aside>
-
- Select 쿼리문에 Where 절 함께 써보기 연습
- SQL을 잘 하기 위해서는, 원하는 정보가 어느 테이블에 담겨있는지 잘 찾는 것이 매우 중요하답니다!
- [퀴즈] 포인트가 20000점보다 많은 유저만 뽑아보기!</aside>
- 이렇게 출력돼야 해요!
- 정답 쿼리 살펴보기!
- select * from point_users where point > 20000;
- <aside> 👉 [힌트!] (1) 원하는 테이블: point_users (2) 조건: point > 20000
- [퀴즈] 성이 황씨인 유저만 뽑아보기</aside>
- 요렇게 나와야 합니다~~!
- 정답 쿼리 살펴보기
- select * from users where name = "황**";
- <aside> 👉 이 퀴즈는 힌트 없이 혼자 해보세요!
- [퀴즈] 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기!</aside>
- 요렇게 나와야 합니다~~!
- 정답 쿼리 살펴보기
- select * from orders where course_title = "웹개발 종합반" and payment_method = "CARD";
- <aside> 👉 [힌트!] 여러 조건은 and로 함께 넣을 수 있다고 했었죠?
- </aside>
-
- [꿀팁🍯] 이렇게 쿼리를 작성하면 편해요!
- </aside>
- </aside>
-
- Where 절과 자주 같이쓰는 문법 배우기
- '같지 않음' 조건 걸어보기</aside>
- '같지 않음' 조건은 != 로 걸 수 있습니다.
- [코드스니펫] '같지 않음' 조건 걸어보기
- "웹개발 종합반" 데이터 없이 잘 나오죠?
- select * from orders where course_title != "웹개발 종합반";
- </aside>
- </aside>
- <aside> 😎 자, 쉬운 것부터 시작해 볼까요?
- '범위' 조건 걸어보기</aside>
- '범위' 조건은 between 으로 걸 수 있어요.
- [코드스니펫] '범위' 조건 걸어보기
- 7월 13일, 7월 14일 주문데이터만 잘 나오죠?
- select * from orders where created_at between "2020-07-13" and "2020-07-15";
- <aside> 👉 7월 13일, 7월 14일의 주문데이터만 보고 싶어졌어요. 어떻게 해야 할까요?
- '포함' 조건 걸어보기</aside>
- '포함' 조건은 in 으로 걸 수 있어요.
- [코드스니펫] '포함' 조건 걸어보기
- 1, 3 주차 사람들의 '오늘의 다짐'만 잘 나오죠?
- select * from checkins where week in (1, 3);
- <aside> 👉 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보고 싶어졌어요.
- '패턴' (문자열 규칙) 조건 걸어보기</aside>
- '패턴' 조건은 like 으로 걸 수 있어요.
- [코드스니펫] '패턴' (문자열 규칙) 조건 걸어보기
- 오! 엄청 신기하죠? 많이 사용되는 유용한 기능이랍니다!
- select * from users where email like '%daum.net';
- [꿀팁🍯] Like의 다양한 사용법</aside>
- 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로 끝나는 모든 데이터
- </aside>
- <aside> 👉 Like는 패턴으로 조건을 거는 문법으로, 사용법이 아주 다양하답니다!
- <aside> 👉 다음 (daum) 이메일을 사용하는 유저만 보고 싶어졌어요. 어떻게 하죠?
-
- [퀴즈] 자, 이제 직접 쿼리를 짜볼까요?
- [퀴즈] 결제수단이 CARD가 아닌 주문데이터만 추출해보기</aside>
- 요런 식으로 나와야 합니다! (일부 데이터만 나온 이미지)
- 정답 쿼리 살펴보기
- select * from orders where payment_method != 'CARD';
- <aside> 👉 [힌트!] '같지 않음' 조건은 != 를 사용한다고 했었죠?
- [퀴즈] 20000~30000 포인트 보유하고 있는 유저만 추출해보기</aside>
- 요런 식으로 나와야 합니다!
- 정답 쿼리 살펴보기
- select * from point_users where point between 20000 and 30000
- <aside> 👉 [힌트!] '범위' 조건은 between을 사용한다고 했었죠?
- [퀴즈] 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기</aside>
- 요런 식으로 나와야 합니다!
- 정답 쿼리 살펴보기
- select * from users where email like 's%com';
- <aside> 👉 [힌트!] Like에서 'a%o'를 사용하면 a로 시작하고 o로 끝나는 데이터를 얻을 수 있어요!
- [퀴즈] 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출해보기</aside>
- 요런 식으로 나와야 합니다!
- 정답 쿼리 살펴보기
- select * from users where email like 's%com' and name = "이**";
- <aside> 👉 [힌트!] Like에서 'a%o'를 사용하면 a로 시작하고 o로 끝나는 데이터를 얻을 수 있어요!
- </aside>
-
- 일부 데이터만 가져오기: Limit
- 그런 경우를 대비해, 일부 데이터만 가져오는 Limit이라는 기능이 있습니다.
- 백문이 불여일견! 직접 SQL 쿼리를 볼까요?
- 요렇게, 맨 뒤에 limit을 써주고 몇 개 출력할지 숫자를 적어주면 끝!
- 딱 5개만 출력된 것을 알 수 있죠?
- select * from orders where payment_method = "kakaopay" limit 5;
- </aside>
-
- 중복 데이터는 제외하고 가져오기: Distinct
- orders 테이블을 모두 불러와서, 한줄한줄씩 읽으며 어떤 결제수단들이 있는지 확인한다
- distinct 기능을 사용해서 한 방에 본다
- 정답은 2번! 너무 쉽죠?
- 마찬가지로, 직접 바로 SQL 쿼리로 가시죠!
- 출력하고 싶은 필드에 distinct로 감싸주면 끝!
- 요렇게, 네 개의 결제수단이 있다는 사실을 한 줄로 알아낼 수 있답니다!
- select distinct(payment_method) from orders;
-
- 몇 개인지 숫자 세보기: Count
- orders 테이블의 데이터를 모두 불러와서, 한줄한줄씩 센다
- count 기능을 사용해서 한방에 본다
- 당연히 2번이죠?
- 바로 SQL 쿼리부터 보시죠!
- 한 줄로 끝! select * from orders에서 *을, count로 감싸주면 됩니다.
- 이렇게 한 줄로 끝!
- select count(*) from orders
-
- [응용] Distinct와 Count를 같이 써보기
- SQL 쿼리 보러가기
- 이렇게 하면 성씨가 쭉 나오죠?
SELECT count(distinct(name)) from users;
- 그리고, 여기에 count를 입혀주면 몇 개의 성씨가 있는지 알 수 있습니다. (참 쉽죠?)
- select distinct(name) from users;
- </aside>
05. 같이 삽질해보기
-
- 혼자서도 문제를 해결하려면
- 그럼 어떻게 하는게 좋을까요?
- 에러 메시지 해석해보기 (1)
- 자, 뭔가 에러가 났습니다! 어떤 에러메시지일까요?
- Unknown column 'kakaopay' in 'where clause'라고 나와있죠?
- 그러면 어떻게 하면 좋을까요?
- 결제수단이 kakaopay라는 값을 가진 데이터만 불러오기 위해서는, kakaopay를 문자열(값)으로 지정해 줘야겠죠!
- 즉, kakaopay라는 글자가 '컬럼(필드)' 이름으로 인식되어서 발생한 에러에요.
- 에러 메시지 해석해보기 (2)
- </aside>
- 아직은 감이 안 잡힌다고요? 괜찮아요! 저랑 같이 문제를 해결해봐요.
- </aside>
06**. 퀴즈 풀어보기**
-
- [퀴즈] Select 쿼리문, Where 절 연습하기
- 정답 쿼리 살펴보기!<aside> 😎 이해가 안 되신다고요? 저랑 같이 해봐요!
- </aside>
- select email from users where name = "남**";
- </aside>
-
- [퀴즈] Where 절과 자주 같이쓰는 문법 연습하기
- 정답 쿼리 살펴보기!<aside> 😎 이해가 안 되신다고요? 저랑 같이 해봐요!
- </aside>
- select * from users where created_at between "2020-07-12" and "2020-07-14" and email like "%gmail.com";
- </aside>
-
- [퀴즈] 이외 유용한 문법 연습하기
- 정답 쿼리 살펴보기!<aside> 😎 이해가 안 되신다고요? 저랑 같이 해봐요!
- </aside>
- select count(*) from users where created_at between "2020-07-12" and "2020-07-14" and email like "%gmail.com";
- </aside>
07**. 끝 & 숙제 설명**
<aside> 📃 자, 1주차 고생 많았습니다! 고생의 끝은 숙제죠?
숙제: naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기
</aside>
- 결과<aside> 😎 이런 결과가 나오면 정답! 👏
- </aside>
HW. 1주차 숙제 답안 코드
- [코드스니펫] - 1주차 숙제 답안 코드
- select * from orders where email like '%naver.com' and course_title = '웹개발 종합반' and payment_method = 'kakaopay'
Copyright ⓒ TeamSparta All rights reserved.
</aside>
[수업 목표]
- 데이터베이스(DB)와 SQL이 왜 필요한지 이해한다.
- DB에서 데이터를 가져오는 기초적인 문법인 Select와 Where문을 이해한다.
- 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.
[목차]
<aside> 💡 모든 토글을 열고 닫는 단축키 Windows : Ctrl + alt + t Mac : ⌘ + ⌥ + t
</aside>
01. 1주차 오늘 배울 것
-
- 환영합니다!
- 아쉽게도, 이런 개념이 실무에서 그렇게 도움이 되지 않았습니다.
- 자, 이제 본격적으로 시작해볼까요?
- 저는, 이러한 학습법이 SQL을 잘하게 되기까지의 지름길이라 확신합니다.
- <aside> 👉 이 수업은
- 복잡한 개념을 모두 이해하는 방식이 아니라, 일단 반복적으로 써보면서 감과 원리를 익혀가는 것이 중요하다고 느꼈습니다.
- 예) 관계형 데이터베이스, ERD, 스키마, 엔티티 등..
- <aside> 👉 개인적인 경험
- 저는 '엑셀보다 쉬운 SQL' 튜터를 맡은 이범규입니다. 여러분들과 4주동안 SQL을 함께 연습할 생각을 하니 가슴이 두근두근하네요.
-
- 데이터베이스(DB)와 SQL이 왜 필요할까?
-
- 내가 배달음식점의 사장이라면?
- 필요한 데이터만 불러와서 작업할 수 있어서 속도는 빨라졌고
- 충돌이 생겼을 경우 에러를 띄우는 기능을 추가해서 충돌로 생기는 문제도 사라졌어요.
- 아주 작은 회사에서는 불필요하겠지만, 많은 양의 데이터를 효과적으로 저장/수정/사용하기 위해서는 데이터베이스가 필요합니다. 그래서 거의 모든 회사의 데이터는 데이터베이스에 저장되어 있어요.
- 이 외에도, 데이터베이스가 사용자에게 주는 이점은 정말 많답니다! 오늘은 첫 날이니, 이 정도만 살펴보아요.
- <aside> 😎 고민을 하다가, 데이터베이스에 모든 주문데이터를 저장하기 시작했어요.
- </aside>
- <aside> ❗ 그런데 문제가 생겼어요! 데이터가 많아지면서 엑셀 시트가 점점 느려지고, 여러사람이 작업하는 내용이 충돌하면서 취소된 주문에 배달이 나가는 등의 문제가 생겨나기 시작했어요.
- </aside>
- <aside> 😎 그런데 어느날, 장사가 엄청 잘 되기 시작했어요! 이제는 혼자서는 힘들어져서, 주문을 기록해주고 일을 도와줄 직원 여러명을 채용했어요.
- </aside>
-
- 데이터베이스 기초 개념
- <aside> 😎 점점 어려워진다고요? 괜찮아요! 이 강의에서는, 저장된 데이터를 읽어오는 "R (Read)"에 대해서만 배울 것이랍니다.
- C (Create): 데이터의 생성을 의미합니다 R (Read): 저장된 데이터를 읽어오는 것을 의미해요 U (Update): 저장된 데이터를 변경! D (Delete): 저장된 데이터를 삭제하는 것을 의미해요
- </aside>
-
- SQL이 왜 필요할까?
- </aside>
- <aside> 👉 SQL은 Structured Query Language의 약자인데요, 결국 데이터베이스에 요청 (Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어라는 의미에요!
- 열심히 저장된 데이터, 잘 가져다 써야겠죠?
-
- 1~4주차에 배울 순서!
- 1주차: Select, Where</aside>
- <aside> 👉 데이터를 불러오고 (Select), 조건에 맞게 필터링 하는 것 (Where)!
- 2주차: Group by, Order by</aside>
- <aside> 👉 데이터를 범주에 따라 묶어서 통계치를 구하고 (Group by), 정렬하는 것 (Order by)!
- 3주차: Join</aside>
- <aside> 👉 여러 데이터를 합쳐서 분석하기 (Join), 더 쉽고 깔끔하게 원하는 데이터를 얻기 (Subquery)
- 4주차: Subquery, 그 외</aside>
- <aside> 👉 실전의 데이터는 생각보다 잘 정리되어 있지 않답니다! 데이터 분석을 위해서 데이터를 원하는 형태로 정리하는 방법을 배워요.
02. 필수 프로그램 설치
-
- DBeaver (다운로드 링크)
- (←눌러보기) DBeaver 다운로드 하기
- 다운로드 링크를 클릭하세요.
- Windows를 사용하고 계시면 (installer), Mac을 사용하고 계시면 (dmg) 라고 되어있는 링크를 클릭하여 DBeaver를 다운로드 받은 후 설치까지 마무리해주세요.
- </aside>
- <aside> 👉 '계속' 버튼을 눌러서 진행해주시면 됩니다!
- (←눌러보기) 스파르타 데이터베이스 연결 방법 참고
- 설치한 DBeaver를 실행합니다
- 좌측 상단 플러그 모양의 아이콘을 클릭합니다
- 새 창이 뜨면, MySQL을 선택하고 '다음' 버튼을 누릅니다
- 아래와 같이 정보를 입력하고 좌측 하단 'Test Connection' 버튼을 클릭합니다.Username: sparta_student Password: sparta99
- </aside>
- <aside> 👉 Server Host: sparta.cbt9ceqjwlr9.ap-northeast-2.rds.amazonaws.com Database: sparta
- 만약 Driver가 설치되어있지 않으면 아래와 같은 창이 뜹니다. 다운로드 버튼을 눌러줍니다.
- Connection Test 결과에 'Connected'라고 뜨면, 확인 버튼을 누르고 완료 버튼을 눌러줍니다.
- </aside>
03. SQL과 데이터베이스 살펴보기
<aside> 👉 시작하기 전에, sparta_week1.sql 이라는 파일을 먼저 만들어봅시다!
</aside>
-
- Select 쿼리문의 개념
- 4주동안 배울 것은 데이터를 잘 뽑아내는 것이죠? 따라서, 수업의 모든 쿼리문에는 Select가 들어갑니다.
- Select 쿼리문은 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성됩니다.
- 테이블과 필드가 뭘까요?
- 테이블: orders라는 엑셀 시트명 보이시죠? 테이블은 데이터가 담긴 엑셀 시트와 동일합니다. 이런 형태의 값이 데이터베이스에 담기면, orders라는 이름의 테이블이 되겠죠.
- 필드: order_no, created_at, course_title, user_id, payment_method, email 각각이 필드입니다.
- </aside>
- </aside>
- 여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미입니다.
-
- Select 쿼리문 연습
- 이런 화면이 나오면 성공!
- [코드스니펫] - 스파르타 데이터베이스의 테이블 보기
- 아래와 같은 화면이 나오면 성공!
- </aside>
- <aside> 👉 checkins, courses, enrolleds ... 라는 이름의 테이블들이 있다는 이야깁니다!
- show tables;
- [코드스니펫] - orders 테이블의 데이터 가져와보기
- 요런 데이터가 나오면 성공!
- select * from orders;
- [코드스니펫] - orders 테이블의 특정 필드만 가져와보기
- 마찬가지로, 이런 데이터가 나오면 성공!
- select created_at, course_title, payment_method, email from orders;
- </aside>
- </aside>
- </aside>
-
- 스파르타 데이터베이스의 구조
- checkins: 여러분이 강의실 들어오시며 남기는 '오늘의 다짐'이 들어있어요
- courses: 스파르타의 개설 강좌 정보가 들어있어요
- enrolleds: 유저별 강좌 등록정보가 들어있어요
- enrolleds_detail: 유저별 들을 수 있는 영상과, 들었는지 여부가 들어있어요
- orders: 주문 (수강등록) 정보가 들어있어요
- point_users: 유저별 포인트 점수가 들어있어요
- users: 유저 정보가 들어있어요
- (소곤소곤) 직접 select * from 테이블명 이렇게 쿼리를 날려보셔도 돼요!
- </aside>
- </aside>
04. Select, Where 절 등 문법 연습해보기
-
- Where 절의 개념
- 예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!
- </aside>
-
- Select 쿼리문에 Where 절 함께 써보기
- 쿼리를 직접 써보면서 이해해볼까요? 일단 따라 써 봅니다!
- 아주 직관적이죠? "orders 테이블에서 payment_method가 kakaopay인 것만 가져와줘!" 라는 의미랍니다.
- 만약 "kakaopay"가 아니라 kakaopay라고 쓰면?
- 당연히 에러가 납니다! 🥳
- [Unknown column 'kakaopay' in 'where clause'] 에러문구를 천천히 읽어볼까요?
- </aside>
- </aside>
- <aside> 👉 Q) 잠깐! 왜 kakaopay가 아니라 "kakaopay"라고 쓰나요? A) kakaopay를 필드명이나 테이블명이 아닌 문자열로 인식시키려는거에요.
- select * from orders where payment_method = "kakaopay";
- 여러 조건을 걸어주기 위해서는? 이것도 우선 따라 써 봅시다!
- 마찬가지로 엄청 직관적이죠? and 를 넣어서 원하는 조건을 계속 추가해주면 됩니다!
- select * from orders where course_title = "앱개발 종합반" and payment_method = "kakaopay";
- </aside>
-
- Select 쿼리문에 Where 절 함께 써보기 연습
- SQL을 잘 하기 위해서는, 원하는 정보가 어느 테이블에 담겨있는지 잘 찾는 것이 매우 중요하답니다!
- [퀴즈] 포인트가 20000점보다 많은 유저만 뽑아보기!</aside>
- 이렇게 출력돼야 해요!
- 정답 쿼리 살펴보기!
- select * from point_users where point > 20000;
- <aside> 👉 [힌트!] (1) 원하는 테이블: point_users (2) 조건: point > 20000
- [퀴즈] 성이 황씨인 유저만 뽑아보기</aside>
- 요렇게 나와야 합니다~~!
- 정답 쿼리 살펴보기
- select * from users where name = "황**";
- <aside> 👉 이 퀴즈는 힌트 없이 혼자 해보세요!
- [퀴즈] 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기!</aside>
- 요렇게 나와야 합니다~~!
- 정답 쿼리 살펴보기
- select * from orders where course_title = "웹개발 종합반" and payment_method = "CARD";
- <aside> 👉 [힌트!] 여러 조건은 and로 함께 넣을 수 있다고 했었죠?
- </aside>
-
- [꿀팁🍯] 이렇게 쿼리를 작성하면 편해요!
- </aside>
- </aside>
-
- Where 절과 자주 같이쓰는 문법 배우기
- '같지 않음' 조건 걸어보기</aside>
- '같지 않음' 조건은 != 로 걸 수 있습니다.
- [코드스니펫] '같지 않음' 조건 걸어보기
- "웹개발 종합반" 데이터 없이 잘 나오죠?
- select * from orders where course_title != "웹개발 종합반";
- </aside>
- </aside>
- <aside> 😎 자, 쉬운 것부터 시작해 볼까요?
- '범위' 조건 걸어보기</aside>
- '범위' 조건은 between 으로 걸 수 있어요.
- [코드스니펫] '범위' 조건 걸어보기
- 7월 13일, 7월 14일 주문데이터만 잘 나오죠?
- select * from orders where created_at between "2020-07-13" and "2020-07-15";
- <aside> 👉 7월 13일, 7월 14일의 주문데이터만 보고 싶어졌어요. 어떻게 해야 할까요?
- '포함' 조건 걸어보기</aside>
- '포함' 조건은 in 으로 걸 수 있어요.
- [코드스니펫] '포함' 조건 걸어보기
- 1, 3 주차 사람들의 '오늘의 다짐'만 잘 나오죠?
- select * from checkins where week in (1, 3);
- <aside> 👉 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보고 싶어졌어요.
- '패턴' (문자열 규칙) 조건 걸어보기</aside>
- '패턴' 조건은 like 으로 걸 수 있어요.
- [코드스니펫] '패턴' (문자열 규칙) 조건 걸어보기
- 오! 엄청 신기하죠? 많이 사용되는 유용한 기능이랍니다!
- select * from users where email like '%daum.net';
- [꿀팁🍯] Like의 다양한 사용법</aside>
- where email like 'a%': email 필드값이 a로 시작하는 모든 데이터</