엑셀보다 쉬운 SQL - 1주차

dowon kim·2023년 6월 1일
0

엑셀보다 쉬운 SQL

목록 보기
1/5

데이터베이스(DB)와 SQL이 왜 필요할까?

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

데이터베이스 기초 개념

  • 데이터베이스란? 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통이라고 생각하면 되어요.

  • 원하는대로 데이터를 저장하고 사용하기 위해서는 다양한 기능이 있어야겠죠? 그래서 통상적으로, 모든 데이터베이스는 CRUD에 해당하는 기능을 지원해요.

  • C (Create): 데이터의 생성을 의미합니다

  • R (Read): 저장된 데이터를 읽어오는 것을 의미해요

  • U (Update): 저장된 데이터를 변경!

  • D (Delete): 저장된 데이터를 삭제하는 것을 의미해요

SQL이 왜 필요할까?

  • 데이터를 읽어오는 과정인 "R (Read)"를 엄청나게 편하게 만들어줍니다. 그리고, 데이터를 손쉽고 깔끔하게 정리/분석하는 기능도 지원한답니다!

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

Select 쿼리문이란?

  • 쿼리(Query)문이란? 쿼리는 질의를 의미하죠. 데이터베이스에 명령을 내리는 것을 의미합니다.
    여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미입니다.

  • 4주동안 배울 것은 데이터를 잘 뽑아내는 것이죠? 따라서, 수업의 모든 쿼리문에는 Select가 들어갑니다.

  • Select 쿼리문은 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성됩니다.

테이블과 필드가 뭘까요?

  • 테이블: orders라는 엑셀 시트명 보이시죠? 테이블은 데이터가 담긴 엑셀 시트와 동일합니다. 이런 형태의 값이 데이터베이스에 담기면, orders라는 이름의 테이블이 되겠죠.

  • 필드: order_no, created_at, course_title, user_id, payment_method, email 각각이 필드입니다.

  • 예시) Select 쿼리문을 통해 'orders 테이블의 created_at, course_title, payment_method, email 필드를 가져와줘!'라고 명령을 내릴 수 있답니다.

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

  • Where 절의 개념
    Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미해요.

예1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!

예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!

예3) orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!

select * from orders
where payment_method = "kakaopay";

아주 직관적이죠? "orders 테이블에서 payment_method가 kakaopay인 것만 가져와줘!" 라는 의미랍니다.

Q) 잠깐! 왜 kakaopay가 아니라 "kakaopay"라고 쓰나요?

A) kakaopay를 필드명이나 테이블명이 아닌 문자열로 인식시키려는거에요.

  • 여러 조건을 걸어주기 위해서는? 이것도 우선 따라 써 봅시다!
select * from orders
where course_title = "앱개발 종합반" and payment_method = "kakaopay";

- 마찬가지로 엄청 직관적이죠? and 를 넣어서 원하는 조건을 계속 추가해주면 됩니다!
  • 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' 구글링!)

    이외 유용한 문법 배워보기

  • 일부 데이터만 가져오기: Limit 👉 테이블에 어떤 데이터가 들어있나 잠깐 보려고 들어왔는데, 데이터를 다 불러오느라 시간이 오래 걸리면 힘들겠죠?
  • 그런 경우를 대비해, 일부 데이터만 가져오는 Limit이라는 기능이 있습니다.
  • 백문이 불여일견! 직접 SQL 쿼리를 볼까요?
    select * from orders 
    where payment_method = "kakaopay"
    limit 5;
    • 요렇게, 맨 뒤에 limit을 써주고 몇 개 출력할지 숫자를 적어주면 끝!
  • 중복 데이터는 제외하고 가져오기: Distinct
select distinct(payment_method) from orders;
  • 몇 개인지 숫자 세보기: Count
select count(*) from orders
  • [응용] Distinct와 Count를 같이 써보기
SELECT count(distinct(name)) from users;

1주차 숙제

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

웹개발 종합반을 신청했고,

and course_title = "웹개발 종합반"

결제는 kakaopay로 이뤄진,

and payment_method = 'kakaopay'

주문데이터

select * from orders

정답

select * from orders
where email like '%naver.com'
and course_title = '웹개발 종합반'
and payment_method = 'kakaopay'
profile
The pain is so persistent that it is like a snail, and the joy is so short that it is like a rabbit's tail running through the fields of autumn

0개의 댓글