항해99 온보딩 스터디[SQL 학습] 13일차

Hohomi·2023년 3월 20일
0
post-thumbnail

스터디 13일차 : SQL 학습

온보딩 커리큘럼 3주차에 접어드는 이번 주에는 3그룹으로 나누어 공부를 한다. 웹개발 종합반을 재수강하는 웹종 완주팀, 예비 프론트엔드 심화 학습 CSS팀, 예비 백엔드 심화 학습 SQL팀이 있다. 그 중 나는 SQL팀이다. 한 주 동안 항해에서 제공되는 <엑셀보다 쉬운 SQL> 강의를 수강하고, 실습 과제와 SQLD 대비 문제 등을 풀 예정이다.


🎈 데이터베이스와 SQL

  • 데이터 베이스란?
    : 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통~!

  • 모든 데이터베이스는 CRUD에 해당하는 기능을 지원한다.
    C (Create): 데이터의 생성을 의미
    R (Read): 저장된 데이터를 읽어오는 것
    U (Update): 저장된 데이터를 변경
    D (Delete): 저장된 데이터를 삭제하는 것

  • SQL이란?
    : Structured Query Language의 약자. 데이터베이스에 요청(Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어
    : 데이터를 가져오는 명령어를 작성하는 것을 'SQL 쿼리를 작성한다'라고 한다.


🎈 Select 쿼리문

  • Select 쿼리문이란?
    : 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미의 명령문
    : 1)어떤 테이블에서 2)어떤 필드의 데이터를 가져올지 로 구성된다.
show tables;
select * from orders;
select created_at, course_title, payment_method, email from orders;

🎈 Where절

  • Where절은 Select 쿼리문으로 가져올 데이터에 '조건을 걸어주는 것'을 의미한다.
    ex) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!
  • 다양한 예시들
--- 포인트가 20000점보다 많은 유저만 뽑아보기 ---
select * from point_users
where point > 20000;

--- 성이 황씨인 유저만 ---
select * from users
where name = "황**";

---웹개발 종합반이면서 결제수단이 CARD인 주문건만 ---
select * from orders
where course_title = "웹개발 종합반" and payment_method = "CARD";

🎈 쿼리문 작성 꿀팁

1) show tables로 어떤 테이블이 있는지 살펴보기
2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 쿼리 날려보기
3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
4) 테이블 찾으면, 이번에는 조건을 걸 필드를 찾기
5) select * from 테이블명 where 조건 작성


🎈 Where절과 함께 쓰는 다양한 조건들

--- 같지 않음 ---
select * from orders
where course_title != "웹개발 종합반";

--- 범위 ---
select * from orders
where created_at between "2020-07-13" and "2020-07-15";

--- 포함 ---
select * from checkins 
where week in (1, 3);

--- 패턴 ---
--- users 테이블의 email 필드에서 'daum.net'을 포함하는 데이터 뽑기 ---
select * from users 
where email like '%daum.net';

--- like의 다양한 사용법 ---
where email like 'a%' : email 필드값이 a로 시작하는 모든 데이터
where email like '%a' : email 필드값이 a로 끝나는 모든 데이터
where emaili like '%co%' : email 필드값에 co를 포함하는 모든 데이터
where email like 'a%o' : email 필드값이 a로 시작하고 o로 끝나는 모든 데이터

--- 예시 ---
--- 이메일이 s로 시작하고 com으로 끝나면서 성이 이씨인 유저 추출하기 ---
select * from users
where email like 's%com' and name = '이**';

🎈 그 외 유용한 문법

--- 일부 데이터만 가져오기 : Limit ---
--- 5개만 가져옴 ---
select * from orders 
where payment_method = "kakaopay"
limit 5;

--- 중복 데이터는 제외하고 가져오기 : Distinct ---
--- 목록 등을 확인하기에 용이함 ---
select distinct(payment_method) from orders;

--- 몇 개인지 숫자 세보기 : Count ---
select count(*) from orders

--- [응용] Distinct와 Count를 같이 써보기 ---
--- 회원들의 성씨가 몇 개인지 확인 ---
select count(distinct(name)) from users;

🎈 범주의 통계를 내주는 Group by

  • Group by 문법이란?
    : 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것. 예를 들어 같은 성씨의 데이터를 하나로 묶거나, 각 성씨의 회원수를 구할 수 있다.
    : Group by문을 사용하면 where절을 사용한 수십개의 쿼리를 작성할 필요 없이 한번에 원하는 데이터 묶음의 추출이 가능하다.
--- 성씨의 회원수를 Group by로 쉽게 구하기 ---
select name, count(*) from users
group by name;
  • SQL 쿼리가 실행되는 순서
    1) from users: users 테이블 데이터 전체를 가져온다.
    2) group by name : users 테이블 데이터에서 같은 name을 갖는 데이터를 합친다.
    3) select name, count(*) : name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 센다.

🎈 데이터를 정렬해주는 Order by

  • Order by 문법
    : 데이터를 오름차순, 내림차순으로 정렬해준다.
--- 오름차순 ---
select name, count(*) from users
group by name
order by count(*);

--- 내림차순 ---
select name, count(*) from users
group by name
order by count(*) desc;

🎈 Where와 Group by, Order by 함께 사용

--- 웹개발 종합반의 결제수단별 주문건수 세어보기 ---
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;

--- Gmail을 사용하는 성씨별 회원수 세어보기 ---
select name, count(*) from users
where email like '%gmail.com'
group by name;

--- course_id별 '오늘의 다짐'에 달린 평균 like 개수 구하기 ---
select course_id, avg(likes) from checkins
group by course_id;



참고자료

스파르타 코딩클럽 - 엑셀보다 쉬운 SQL 강의자료

profile
게발로 개발하기

0개의 댓글