[스파르타코딩클럽] 엑셀보다 쉬운 SQL - 1주차

설정훈·2022년 3월 26일
0

[스파르타코딩클럽] 엑셀보다 쉬운 SQL - 1주차

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3e9b61fa-7a3a-4ebc-b502-407eaf7619ee/css__280x280.png **매 주차 강의노트 시작에 PDF파일을 올려두었어요!**

[수업 목표]

  1. 데이터베이스(DB)와 SQL이 왜 필요한지 이해한다.
  2. DB에서 데이터를 가져오는 기초적인 문법인 Select와 Where문을 이해한다.
  3. 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.

[목차]

💡 모든 토글을 열고 닫는 단축키 Windows : `Ctrl` + `alt` + `t` Mac : `⌘` + `⌥` + `t`

01. 오늘 배울 것

  • 1) 환영합니다! 😎 환영합니다 여러분! 저는 '엑셀보다 쉬운 SQL' 튜터를 맡은 이범규입니다. 여러분들과 4주동안 SQL을 함께 연습할 생각을 하니 가슴이 두근두근하네요. 👉 **개인적인 경험** 맨 처음 SQL을 접했을 때, 너무 헷갈리고 어려웠던 개념들. SQL 쿼리를 작성하기 전에 익혀야 할 개념이 너무나도 많았습니다. 예) 관계형 데이터베이스, ERD, 스키마, 엔티티 등.. - 아쉽게도, 이런 개념이 실무에서 그렇게 도움이 되지 않았습니다. 👉 **SQL을 잘 하기 위해서는,** 복잡한 개념을 모두 이해하는 방식이 아니라, 일단 반복적으로 써보면서 감과 원리를 익혀가는 것이 중요하다고 느꼈습니다. 👉 **이 수업은** SQL의 쉬운 개념부터 어려운 개념까지, SQL 쿼리를 저와 함께 작성해보며 '같이 삽질하며 익히는' 수업입니다. 저는, 이러한 학습법이 SQL을 잘하게 되기까지의 지름길이라 확신합니다. - 자, 이제 본격적으로 시작해볼까요?
  • 2) 데이터베이스(DB)와 SQL이 왜 필요할까?
      1. 내가 배달음식점의 사장이라면?

        👉 자, 배달음식점 사장이 되었다고 상상해봅시다! 아직까지는 규모가 크지 않아서, 혼자서 이렇게 엑셀 시트에 주문내역을 정리하고 있어요.

        https://s3-us-west-2.amazonaws.com/secure.notion-static.com/84827333-71cd-4d32-a677-cc5402053471/Untitled.png

        😎 그런데 어느날, 장사가 엄청 잘 되기 시작했어요! 이제는 혼자서는 힘들어져서, 주문을 기록해주고 일을 도와줄 직원 여러명을 채용했어요.

        https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a27c6f10-23ea-4fd1-b4ba-1246dd99f884/Untitled.png

        ❗ 그런데 문제가 생겼어요! 데이터가 많아지면서 엑셀 시트가 점점 느려지고, 여러사람이 작업하는 내용이 충돌하면서 취소된 주문에 배달이 나가는 등의 문제가 생겨나기 시작했어요.

        https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ecb33d4b-745f-4000-a6f6-81f7d917078c/Untitled.png

        😎 고민을 하다가, 데이터베이스에 모든 주문데이터를 저장하기 시작했어요.

        1) 필요한 데이터만 불러와서 작업할 수 있어서 속도는 빨라졌고
        2) 충돌이 생겼을 경우 에러를 띄우는 기능을 추가해서 충돌로 생기는 문제도 사라졌어요.

      • 아주 작은 회사에서는 불필요하겠지만, 많은 양의 데이터를 효과적으로 저장/수정/사용하기 위해서는 데이터베이스가 필요합니다. 그래서 거의 모든 회사의 데이터는 데이터베이스에 저장되어 있어요.
      • 이 외에도, 데이터베이스가 사용자에게 주는 이점은 정말 많답니다! 오늘은 첫 날이니, 이 정도만 살펴보아요.
      1. 데이터베이스 기초 개념

        👉 데이터베이스란? 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통이라고 생각하면 되어요. 👉 원하는대로 데이터를 저장하고 사용하기 위해서는 다양한 기능이 있어야겠죠? 그래서 통상적으로, 모든 데이터베이스는 CRUD에 해당하는 기능을 지원해요.

        C (Create): 데이터의 생성을 의미합니다
        R (Read): 저장된 데이터를 읽어오는 것을 의미해요
        U (Update): 저장된 데이터를 변경!
        D (Delete): 저장된 데이터를 삭제하는 것을 의미해요

        😎 점점 어려워진다고요? 괜찮아요! 이 강의에서는, 저장된 데이터를 읽어오는 "R (Read)"에 대해서만 배울 것이랍니다.
      1. SQL이 왜 필요할까?

        👉 자, 그럼 SQL은 왜 필요할까요? 데이터를 읽어오는 과정인 "R (Read)"를 엄청나게 편하게 만들어줍니다. 그리고, 데이터를 손쉽고 깔끔하게 정리/분석하는 기능도 지원한답니다!

        열심히 저장된 데이터, 잘 가져다 써야겠죠?

        👉 SQL은 Structured Query Language의 약자인데요, 결국 데이터베이스에 요청 (Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어라는 의미에요!

        https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a58818a3-ade5-4de6-940a-c31755d8c890/Untitled.png

        😎 짧은 SQL 쿼리 한 줄이면 저장된 데이터를 이렇게 간단히 가져올 수 있어요!

        이렇게, 데이터를 가져오는 명령어를 작성하는 것을 'SQL 쿼리를 작성한다' 라고 한답니다.

      1. 1~4주차에 배울 순서!
      • 1주차: Select, Where 👉 데이터를 불러오고 (Select), 조건에 맞게 필터링 하는 것 (Where)!
      • 2주차: Group by, Order by 👉 데이터를 범주에 따라 묶어서 통계치를 구하고 (Group by), 정렬하는 것 (Order by)!
      • 3주차: Join 👉 여러 데이터를 합쳐서 분석하기 (Join), 더 쉽고 깔끔하게 원하는 데이터를 얻기 (Subquery)
      • 4주차: Subquery, 그 외 👉 실전의 데이터는 생각보다 잘 정리되어 있지 않답니다! 데이터 분석을 위해서 데이터를 원하는 형태로 정리하는 방법을 배워요.

02. 필수 프로그램 설치

💡 **DBeaver**는 여러분이 SQL을 보다 손쉽게 사용할 수 있도록 도와주는 도구입니다! 🤩
  • (←눌러보기) 3) DBeaver 다운로드 하기
    1. 다운로드 링크를 클릭하세요.

    2. Windows를 사용하고 계시면 (installer), Mac을 사용하고 계시면 (dmg) 라고 되어있는 링크를 클릭하여 DBeaver를 다운로드 받은 후 설치까지 마무리해주세요.

      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/534ab294-4fec-4aba-8c0b-690a285d6e5f/Untitled.png

      👉 '계속' 버튼을 눌러서 진행해주시면 됩니다!
  • (←눌러보기) 스파르타 데이터베이스 연결 방법 참고
    1. 설치한 DBeaver를 실행합니다

    2. 좌측 상단 플러그 모양의 아이콘을 클릭합니다

      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3f9b1fd6-0d5a-44ab-aa1e-4154482a161f/Untitled.png

    3. 새 창이 뜨면, MySQL을 선택하고 '다음' 버튼을 누릅니다

      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9922f542-1e8f-4bf4-83f7-c3f23a477a55/Untitled.png

    4. 아래와 같이 정보를 입력하고 좌측 하단 'Test Connection' 버튼을 클릭합니다.

      👉 Server Host: [sparta.cbt9ceqjwlr9.ap-northeast-2.rds.amazonaws.com](http://sparta.cbt9ceqjwlr9.ap-northeast-2.rds.amazonaws.com/) Database: sparta

      Username: sparta_student
      Password: sparta99

      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8fb887a9-f642-4a44-a72c-22903583cea0/Untitled.png

    5. 만약 Driver가 설치되어있지 않으면 아래와 같은 창이 뜹니다. 다운로드 버튼을 눌러줍니다.

      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1b00832a-7664-4760-827e-63a79de81034/Untitled.png

    6. Connection Test 결과에 'Connected'라고 뜨면, 확인 버튼을 누르고 완료 버튼을 눌러줍니다.

      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f3e10232-9daa-4ea7-ad52-23fc0b1fdcb9/Untitled.png

03. Select 쿼리문이란?

👉 시작하기 전에, sparta_week1.sql 이라는 파일을 먼저 만들어봅시다!
  • 4) Select 쿼리문의 개념 👉 쿼리(Query)문이란? 쿼리는 질의를 의미하죠. 데이터베이스에 명령을 내리는 것을 의미합니다. 여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미입니다. - 4주동안 배울 것은 데이터를 잘 뽑아내는 것이죠? 따라서, 수업의 모든 쿼리문에는 Select가 들어갑니다. - Select 쿼리문은 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성됩니다. 👉 잠깐! 테이블과 필드가 뭐냐고요? 아래 예시를 보고갈게요. - 테이블과 필드가 뭘까요? ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a4663a42-2301-4791-992b-105236b3c3e3/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a4663a42-2301-4791-992b-105236b3c3e3/Untitled.png) - 테이블: orders라는 엑셀 시트명 보이시죠? 테이블은 데이터가 담긴 엑셀 시트와 동일합니다. 이런 형태의 값이 데이터베이스에 담기면, orders라는 이름의 테이블이 되겠죠. - 필드: order_no, created_at, course_title, user_id, payment_method, email 각각이 필드입니다. 👉 예시) Select 쿼리문을 통해 'orders 테이블의 created_at, course_title, payment_method, email 필드를 가져와줘!'라고 명령을 내릴 수 있답니다.
  • 5) Select 쿼리문 연습 👉 자, 미리 설치한 DBeaver를 켜볼까요? ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bd4da3b3-a6bb-49b0-98b4-9c0f42f6675b/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bd4da3b3-a6bb-49b0-98b4-9c0f42f6675b/Untitled.png) - 이런 화면이 나오면 성공! 👉 SQL 쿼리를 작성하는 입력창이 없다면, 좌측 상단 양피지 모양을 클릭해서 New Script를 해주세요! - **[코드스니펫] - 스파르타 데이터베이스의 테이블 보기** ```sql show tables; ``` - 아래와 같은 화면이 나오면 성공! ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/448ccdc9-717c-4db0-9619-799a6e4dea4b/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/448ccdc9-717c-4db0-9619-799a6e4dea4b/Untitled.png) 👉 checkins, courses, enrolleds ... 라는 이름의 테이블들이 있다는 이야깁니다! - **[코드스니펫] - orders 테이블의 데이터 가져와보기** ```sql select * from orders; ``` ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6c6c56d3-537c-4837-a280-52bf7113a0d2/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6c6c56d3-537c-4837-a280-52bf7113a0d2/Untitled.png) - 요런 데이터가 나오면 성공! - **[코드스니펫] - orders 테이블의 특정 필드만 가져와보기** ```sql select created_at, course_title, payment_method, email from orders; ``` ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1fb7772d-2db3-454c-9052-28c55a4ef47a/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1fb7772d-2db3-454c-9052-28c55a4ef47a/Untitled.png) - 마찬가지로, 이런 데이터가 나오면 성공! 😎 참 쉽죠? 축하합니다! 여러분은 이제 데이터베이스 테이블에서 데이터를 꺼낼 수 있게 되었어요.

04. 4주동안 사용할 스파르타 데이터베이스 살펴보기

  • 6) 스파르타 데이터베이스의 구조 👉 스파르타 데이터베이스에는 아래와 같은 테이블이 있어요. - checkins: 여러분이 강의실 들어오시며 남기는 '오늘의 다짐'이 들어있어요 - courses: 스파르타의 개설 강좌 정보가 들어있어요 - enrolleds: 유저별 강좌 등록정보가 들어있어요 - enrolleds_detail: 유저별 들을 수 있는 영상과, 들었는지 여부가 들어있어요 - orders: 주문 (수강등록) 정보가 들어있어요 - point_users: 유저별 포인트 점수가 들어있어요 - users: 유저 정보가 들어있어요 😎 자, 저와 함께 살펴볼까요? - (소곤소곤) 직접 select * from 테이블명 이렇게 쿼리를 날려보셔도 돼요!

05. 특정 데이터만 가져오고 싶다면?

  • 7) Where 절의 개념 👉 Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미해요. 예1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘! 예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘! 예3) orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!
  • 8) Select 쿼리문에 Where 절 함께 써보기 😎 쿼리는 열 번 듣는 것보다, 한 번 짜는게 빨리 늡니다! 앞의 예시를 같이 해볼까요? - 쿼리를 직접 써보면서 이해해볼까요? 일단 따라 써 봅니다! ```sql select * from orders where payment_method = "kakaopay"; ``` - 아주 직관적이죠? "orders 테이블에서 payment_method가 kakaopay인 것만 가져와줘!" 라는 의미랍니다. ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/da76b460-dc56-4372-adf7-02da76e37c07/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/da76b460-dc56-4372-adf7-02da76e37c07/Untitled.png) 👉 Q) 잠깐! 왜 kakaopay가 아니라 "kakaopay"라고 쓰나요? A) kakaopay를 필드명이나 테이블명이 아닌 문자열로 인식시키려는거에요. - 만약 "kakaopay"가 아니라 kakaopay라고 쓰면? ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7f21afba-25e8-4a7a-b46b-f447e7c0ea18/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7f21afba-25e8-4a7a-b46b-f447e7c0ea18/Untitled.png) - 당연히 에러가 납니다! 🥳 - **[Unknown column 'kakaopay' in 'where clause']** 에러문구를 천천히 읽어볼까요? 👉 Where 절에 있는 kakaopay라는 컬럼은 없다! 는 뜻이에요. 여기서 컬럼은 필드를 의미해요. 정말, kakaopay라는 글자를 컬럼(필드명)으로 인식해버렸죠? - 여러 조건을 걸어주기 위해서는? 이것도 우선 따라 써 봅시다! ```sql select * from orders where course_title = "앱개발 종합반" and payment_method = "kakaopay"; ``` - 마찬가지로 엄청 직관적이죠? and 를 넣어서 원하는 조건을 계속 추가해주면 됩니다! ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6f8f9d1f-cbca-47c7-84b7-650e6c47491f/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6f8f9d1f-cbca-47c7-84b7-650e6c47491f/Untitled.png)

06. Where 절 같이 연습해보기

  • 9) Select 쿼리문에 Where 절 함께 써보기 연습 👉 자, 이제 연습을 해볼까요? (1) 원하는 테이블과 (2) 조건, 이 두 가지만 기억하면 됩니다! - SQL을 잘 하기 위해서는, 원하는 정보가 어느 테이블에 담겨있는지 잘 찾는 것이 매우 중요하답니다! - [퀴즈] 포인트가 20000점보다 많은 유저만 뽑아보기! 👉 [힌트!] (1) 원하는 테이블: point_users (2) 조건: point > 20000 ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/160e3416-79ac-4c50-b8fc-5734f344f0e6/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/160e3416-79ac-4c50-b8fc-5734f344f0e6/Untitled.png) - 이렇게 출력돼야 해요! - 정답 쿼리 살펴보기! ```sql select * from point_users where point > 20000; ``` - [퀴즈] 성이 황씨인 유저만 뽑아보기 👉 이 퀴즈는 힌트 없이 혼자 해보세요! ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c7723553-ff61-469a-9e31-4afbf7135a4c/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c7723553-ff61-469a-9e31-4afbf7135a4c/Untitled.png) - 요렇게 나와야 합니다~~! - 정답 쿼리 살펴보기 ```sql select * from users where name = "황**"; ``` - [퀴즈] 웹개발 종합반이면서 결제수단이 CARD인 주문건만 뽑아보기! 👉 [힌트!] 여러 조건은 and로 함께 넣을 수 있다고 했었죠? ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9f5b4cd6-4cb1-4482-bfcd-484cbe14b945/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9f5b4cd6-4cb1-4482-bfcd-484cbe14b945/Untitled.png) - 요렇게 나와야 합니다~~! - 정답 쿼리 살펴보기 ```sql select * from orders where course_title = "웹개발 종합반" and payment_method = "CARD"; ```
  • 10) [꿀팁🍯] 이렇게 쿼리를 작성하면 편해요! 👉 1) show tables로 어떤 테이블이 있는지 살펴보기 2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 쿼리 날려보기 3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기 4) 테이블을 찾았다! 조건을 걸 필드를 찾기 5) select * from 테이블명 where 조건 이렇게 쿼리 완성! 😎 참 쉽죠? 여러분은 이제 조건에 맞는 데이터를 가져올 수 있는 사람이 되었답니다! 👏

07. Where 절과 자주 같이 쓰는 문법 써보기

  • 11) Where 절과 자주 같이쓰는 문법 배우기
    • '같지 않음' 조건 걸어보기 😎 자, 쉬운 것부터 시작해 볼까요? - '같지 않음' 조건은 != 로 걸 수 있습니다. 👉 '웹개발 종합반'을 제외하고 주문데이터를 보고 싶어졌어요. 어떻게 하면 좋을까요? - **[코드스니펫] '같지 않음' 조건 걸어보기** ```sql select * from orders where course_title != "웹개발 종합반"; ``` - "웹개발 종합반" 데이터 없이 잘 나오죠? 👉 잠깐 상식! '!=' 에서 ! (느낌표)는 부정 (not)을 의미합니다. '='는 같음을 의미하니, '!='는 같지 않음이겠죠!
    • '범위' 조건 걸어보기 👉 7월 13일, 7월 14일의 주문데이터만 보고 싶어졌어요. 어떻게 해야 할까요? - '범위' 조건은 between 으로 걸 수 있어요. - **[코드스니펫] '범위' 조건 걸어보기** ```sql select * from orders where created_at between "2020-07-13" and "2020-07-15"; ``` - 7월 13일, 7월 14일 주문데이터만 잘 나오죠?
    • '포함' 조건 걸어보기 👉 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보고 싶어졌어요. - '포함' 조건은 in 으로 걸 수 있어요. - **[코드스니펫] '포함' 조건 걸어보기** ```sql select * from checkins where week in (1, 3); ``` - 1, 3 주차 사람들의 '오늘의 다짐'만 잘 나오죠?
    • '패턴' (문자열 규칙) 조건 걸어보기 👉 다음 (daum) 이메일을 사용하는 유저만 보고 싶어졌어요. 어떻게 하죠? - '패턴' 조건은 like 으로 걸 수 있어요. - **[코드스니펫] '패턴' (문자열 규칙) 조건 걸어보기** ```sql select * from users where email like '%daum.net'; ``` - 오! 엄청 신기하죠? 많이 사용되는 유용한 기능이랍니다! - [꿀팁🍯] Like의 다양한 사용법 👉 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로 끝나는 모든 데이터 👉 이외에도 여러 문법이 있는데, 그때그때 필요한 것을 찾아서 쓰면 됩니다! 같이 한번 찾아볼까요? ('how to use like in sql' 구글링!)
  • 12) [퀴즈] 자, 이제 직접 쿼리를 짜볼까요? 😎 SQL 잘하는 가장 쉬운 방법: 직접 SQL 쿼리를 많이 짜보기! - [퀴즈] 결제수단이 CARD가 아닌 주문데이터만 추출해보기 👉 [힌트!] '같지 않음' 조건은 != 를 사용한다고 했었죠? ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/46c3aba7-0450-4cad-ac3d-55fa6cef11de/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/46c3aba7-0450-4cad-ac3d-55fa6cef11de/Untitled.png) - 요런 식으로 나와야 합니다! (일부 데이터만 나온 이미지) - 정답 쿼리 살펴보기 ```sql select * from orders where payment_method != 'CARD'; ``` - [퀴즈] 20000~30000 포인트 보유하고 있는 유저만 추출해보기 👉 [힌트!] '범위' 조건은 between을 사용한다고 했었죠? ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/084c6ea2-df41-4301-b603-8a3911e7f326/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/084c6ea2-df41-4301-b603-8a3911e7f326/Untitled.png) - 요런 식으로 나와야 합니다! - 정답 쿼리 살펴보기 ```sql select * from point_users where point between 20000 and 30000 ``` - [퀴즈] 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기 👉 [힌트!] Like에서 'a%o'를 사용하면 a로 시작하고 o로 끝나는 데이터를 얻을 수 있어요! ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/22f8f3d9-2caf-4c0d-afce-216d6fd4abcf/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/22f8f3d9-2caf-4c0d-afce-216d6fd4abcf/Untitled.png) - 요런 식으로 나와야 합니다! - 정답 쿼리 살펴보기 ```sql select * from users where email like 's%com'; ``` - [퀴즈] 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출해보기 👉 [힌트!] Like에서 'a%o'를 사용하면 a로 시작하고 o로 끝나는 데이터를 얻을 수 있어요! ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2aee8ffc-8c0c-4a85-befd-e5d0cdb5278a/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2aee8ffc-8c0c-4a85-befd-e5d0cdb5278a/Untitled.png) - 요런 식으로 나와야 합니다! - 정답 쿼리 살펴보기 ```sql select * from users where email like 's%com' and name = "이**"; ```

08. 이외 유용한 문법 배워보기

  • 13) 일부 데이터만 가져오기: Limit 👉 테이블에 어떤 데이터가 들어있나 잠깐 보려고 들어왔는데, 데이터를 다 불러오느라 시간이 오래 걸리면 힘들겠죠? - 그런 경우를 대비해, 일부 데이터만 가져오는 Limit이라는 기능이 있습니다. - 백문이 불여일견! 직접 SQL 쿼리를 볼까요? ```sql select * from orders where payment_method = "kakaopay" limit 5; ``` - 요렇게, 맨 뒤에 limit을 써주고 몇 개 출력할지 숫자를 적어주면 끝! ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ef00458d-4986-4179-9646-a71de39c2f24/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ef00458d-4986-4179-9646-a71de39c2f24/Untitled.png) - 딱 5개만 출력된 것을 알 수 있죠?
  • 14) 중복 데이터는 제외하고 가져오기: Distinct
    • 정답은 2번! 너무 쉽죠?
    • 마찬가지로, 직접 바로 SQL 쿼리로 가시죠!
      select distinct(payment_method) from orders;
      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1c8640f9-1c6e-45cc-a128-5c89afca2d14/Untitled.png
      • 요렇게, 네 개의 결제수단이 있다는 사실을 한 줄로 알아낼 수 있답니다!
  • 15) 몇 개인지 숫자 세보기: Count 👉 이번에는 orders 테이블에 데이터가 몇 개 들어있는지 궁금해요! (결제가 몇 건이나 들어왔죠? 두근두근) 1) orders 테이블의 데이터를 모두 불러와서, 한줄한줄씩 센다 2) count 기능을 사용해서 한방에 본다 - 당연히 2번이죠? - 바로 SQL 쿼리부터 보시죠! ```sql select count(*) from orders ``` - 한 줄로 끝! select * from orders에서 *을, count로 감싸주면 됩니다. ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/62a8b3fe-6f7e-4a5b-9190-9b106cf108f5/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/62a8b3fe-6f7e-4a5b-9190-9b106cf108f5/Untitled.png) - 이렇게 한 줄로 끝!
  • 16) [응용] Distinct와 Count를 같이 써보기 👉 스파르타 회원 분들의 성(family name)씨가 몇개인지 궁금하다면? 이번에도 마찬가지로 쉬운 방법이 있습니다! - SQL 쿼리 보러가기 ```sql select distinct(name) from users; ``` ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f62d0c7b-e451-45a3-8c5e-fdc40b376895/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f62d0c7b-e451-45a3-8c5e-fdc40b376895/Untitled.png) - 이렇게 하면 성씨가 쭉 나오죠? ```sql SELECT count(distinct(name)) from users; ``` ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2780dea6-e070-49c9-99ef-65a7843ce611/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2780dea6-e070-49c9-99ef-65a7843ce611/Untitled.png) - 그리고, 여기에 count를 입혀주면 몇 개의 성씨가 있는지 알 수 있습니다. (참 쉽죠?)

09. 같이 삽질해보기

  • 17) 혼자서도 문제를 해결하려면 👉 SQL을 사용하다보면 예상하지 못했던 에러를 자주 마주하게 됩니다. 모든 에러에 대한 해결책을 외워서 해결하는 건 비효율적이겠죠? - 그럼 어떻게 하는게 좋을까요? 👉 기초적인 SQL의 경우, 에러 메시지를 보고 원인을 파악하여 문제를 해결해나가는 것! 아직은 감이 안 잡힌다고요? 괜찮아요! 저랑 같이 문제를 해결해봐요. - 에러 메시지 해석해보기 (1) ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c6c847cd-f2ed-4d0b-a269-e0a9a1080d4e/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c6c847cd-f2ed-4d0b-a269-e0a9a1080d4e/Untitled.png) - 자, 뭔가 에러가 났습니다! 어떤 에러메시지일까요? - Unknown column 'kakaopay' in 'where clause'라고 나와있죠? 👉 Where 절에 있는 kakaopay라는 컬럼(필드)가 알려지지 않았다 (컴퓨터는 알지 못한다) 라는 것입니다. 즉, kakaopay라는 글자가 '컬럼(필드)' 이름으로 인식되어서 발생한 에러에요. - 그러면 어떻게 하면 좋을까요? 👉 kakaopay를 'kakaopay'로 바꿔주면 되겠죠? 글자를 ''로 감싸면 변수가 아닌, 문자열(값)로 인식하겠다는 의미입니다. 결제수단이 kakaopay라는 값을 가진 데이터만 불러오기 위해서는, kakaopay를 문자열(값)으로 지정해 줘야겠죠! - 에러 메시지 해석해보기 (2) ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/83d65df9-8eef-474a-97b9-4daaf51a9a7e/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/83d65df9-8eef-474a-97b9-4daaf51a9a7e/Untitled.png) 👉 에러가 생겼을 땐, 당황하지 않고 에러 메시지를 차근차근 읽어보세요! 지금은 어려울 수 있어요, 저랑 4주동안 연습하면 어느샌가 익숙해질거에요.

10. 퀴즈 풀어보기

  • 18) [퀴즈] Select 쿼리문, Where 절 연습하기 👉 성이 남씨인 유저의 이메일만 추출하기 - 정답 쿼리 살펴보기! ```sql select email from users where name = "남**"; ``` 😎 이해가 안 되신다고요? 저랑 같이 해봐요!
  • 19) [퀴즈] Where 절과 자주 같이쓰는 문법 연습하기 👉 Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기 - 정답 쿼리 살펴보기! ```sql select * from users where created_at between "2020-07-12" and "2020-07-13" and email like "%gmail.com"; ``` 😎 이해가 안 되신다고요? 저랑 같이 해봐요!
  • 20) [퀴즈] 이외 유용한 문법 연습하기 👉 Gmail을 사용하는 2020/07/12~13에 가입한 유저의 수를 세기 - 정답 쿼리 살펴보기! ```sql select count(*) from users where created_at between "2020-07-12" and "2020-07-14" and email like "%gmail.com"; ``` 😎 이해가 안 되신다고요? 저랑 같이 해봐요!

10. 끝 & 숙제 설명

📃 자, 1주차 고생 많았습니다! 고생의 끝은 숙제죠?

숙제: naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기

  • 결과 https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e6406dc2-f79b-467d-a53b-b4899f58ad17/Untitled.png 😎 이런 결과가 나오면 정답! 👏

11. 1주차 숙제 답안 코드

  • [코드스니펫] - 1주차 숙제 답안 코드
    select * from orders
    where email like '%naver.com'
    and course_title = '웹개발 종합반'
    and payment_method = 'kakaopay'

Copyright ⓒ TeamSparta All rights reserved.

profile
kitc.sulhuni

0개의 댓글