기초 언어 학습 주차가 끝나고 강의 수강 및 웹미니 프로젝트 주차가 시작했다.
기초 언어 학습 주차 후반부에 객체지향을 시작하면서 몰입이 많이 깨졌고 풀어놓은 알고리즘 TIL 작성도 미뤘다.
이번 주차부터 다시 마음을 가다듬고 프로젝트를 마무리하기 위해 몰입을 기대한다.
여러 사람들이 같이 사용할 목적으로 데이터를 담는 통
원하는대로 데이터를 저장하고 사용하기 위해서는 다양한 기능이 필요하다.
따라서 모든 데이터베이스는 CRUD에 해당하는 기능을 지원한다.
C (Create)
: 데이터의 생성을 의미
R (Read)
: 저장된 데이터를 읽어오는 것을 의미
U (Update)
: 저장된 데이터를 변경
D (Delete)
: 저장된 데이터를 삭제하는 것을 의미
데이터베이스에 요청 Query
을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어라는 의미
데이터를 읽어오는 과정인 R (Read)
를 편하게 만들어준다. 그리고, 데이터를 손쉽고 깔끔하게 정리/분석하는 기능도 지원한다.
checkins
: 강의실 들어오며 남기는 '오늘의 다짐'이 들어있다.courses
: 개설 강좌 정보가 들어있다.enrolleds
: 유저별 강좌 등록정보가 들어있다.enrolleds_detail
: 유저별 들을 수 있는 영상과, 들었는지 여부가 들어있다.orders
: 주문 (수강등록) 정보가 들어있다.point_users
: 유저별 포인트 점수가 들어있다.users
: 유저 정보가 들어있다.(Query)쿼리는 질의를 의미한다. 데이터베이스에 명령을 내리는 것을 의미한다.
여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미이다.
show tables;
checkins, courses, enrolleds ... 라는 이름의 테이블들이 있다
select * from orders;
select created_at, course_title, payment_method, email from orders;
Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미한다.
select * from orders
where payment_method = "kakaopay";
orders 테이블에서 payment_method가 kakaopay인 것만 가져오라는 의미
!=
: 같지않음
between
: 범위
in ()
: 포함
like
: 패턴
etc...
between
은 and와
같이 사용하고 범위를 지정하는데, between
A and
B 는 A와 B사이의 데이터를 지칭한다.
in ()
은 괄호()
안에 들어간 조건이 포함한 데이터를 가져온다.
week in (1, 3)
은 1, 3주차의 데이터를 지칭한다.
like
는 패턴의 조건인데 '%'
를 같이 사용한다.
comment like '%123'
은 comment의 내용의 앞부분이 어떻든 뒷부분이 무조건 123으로 끝나는 데이터를 지칭한다. 또, like '1%123'
은 맨앞부분이 1로 시작하고 맨뒷부분이 123으로 끝나는 데이터를 지칭한다.
limit
: 일부 데이터만 가져오기
distinct
: 중복 데이터는 제외하고 가져오기
count
: 몇 개인지 숫자 세기
e.g) 회원들의 성(family name) 데이터 가져오기
SELECT count(distinct(name)) from users;
select email from users
where name = "남**";
select * from users
where created_at between "2020-07-12" and "2020-07-14"
and email like "%gmail.com";
select count(*) from users
where created_at between "2020-07-12" and "2020-07-14"
and email like "%gmail.com";
select * from orders
where email like '%naver.com'
and course_title = '웹개발 종합반'
and payment_method = 'kakaopay'
특정 필드를 그룹화 해준다.
Group by
로 쉽게 구해보기select name, count(*) from users
group by name;
테이블 데이터를 정렬해준다.
select name, count(*) from users
group by name
order by count(*);
select name, count(*) from users
group by name
order by count(*) desc;
쿼리가 점점 길어지면서 종종 헷갈리는 일이 생길 수 있다. 그래서 SQL은 Alias라는 별칭 기능을 지원한다.
select * from orders o
where o.course_title = '앱개발 종합반'
as 이용 count(*)
가 아니라 cnt
로 출력
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method
1. orders 테이블에서 주문 데이터를 읽어오고
2. 웹개발 종합반 데이터만 남기고
3. 결제수단(범주) 별로 그룹화하고
4. 결제수단별 주문건수를 세어준다
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;
위 쿼리가 실행되는 순서: from → where → group by → select
select payment_method, count(*) from orders
where email like '%naver.com' and course_title = '앱개발 종합반'
group by payment_method
글 재미있게 봤습니다.