데이터베이스
데이터베이스란? 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통
C (Create): 데이터의 생성을 의미
R (Read): 저장된 데이터를 읽어오는 것을 의미
U (Update): 저장된 데이터를 변경!
D (Delete): 저장된 데이터를 삭제하는 것을 의미
Select 쿼리문의 개념
👉 쿼리(Query)문이란? 쿼리는 질의를 의미. 데이터베이스에 명령을 내리는 것을 의미함. 여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미.
- checkins: 여러분이 강의실 들어오시며 남기는 '오늘의 다짐'이 들어있어요
- courses: 스파르타의 개설 강좌 정보가 들어있음.
- enrolleds: 유저별 강좌 등록정보가 들어있음
- enrolleds_detail: 유저별 들을 수 있는 영상과, 들었는지 여부가 들어있음
- orders: 주문 (수강등록) 정보가 들어있음
- point_users: 유저별 포인트 점수가 들어있음
- users: 유저 정보가 들어있음
select / where 쿼리문
select * from orders
where payment_method = "kakaopay";
select * from point_users
where point > 20000;
between
select * from orders
where created_at between "2020-07-13" and "2020-07-15";
포함 조건 in
select * from checkins
where week in (1, 3);
'패턴' (문자열 규칙) 조건
select * from users
where email like '%daum.net';
일부 데이터만 가져오기: Limit
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;
SQL 쿼리가 실행되는 순서
select name, count(*) from users
group by name;
위 쿼리가 실행되는 순서: from → group by → select
Group by
Group by는 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내줌.
동일한 범주의 개수 구하기
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
동일한 범주에서의 최솟값 구하기
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
동일한 범주에서의 최댓값 구하기
select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
동일한 범주의 평균 구하기
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
동일한 범주의 합계 구하기
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
Order by 쿼리가 실행되는 순서
select name, count(*) from users
group by name
order by count(*);
위 쿼리가 실행되는 순서: from → group by → select → order by
Join 이란?
두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미함.
- Left Join
- 여기서 A와 B는 각각의 테이블을 의미함. 둘 사이의 겹치는 부분은, 뭔가 테이블 A와 B의 key 값이 연결되는 부분
-
select * from users u left join point_users p on u.user_id = p.user_id;
- Inner Join
- 여기서 A와 B는 각각의 테이블을 의미. 이 그림은, 두 테이블의 교집합을 의미.
select * from users u
inner join point_users p
on u.user_id = p.user_id;
Join 쿼리가 실행되는 순서
select * from enrolleds e
inner join courses c
on e.course_id = c.course_id;
위 쿼리가 실행되는 순서: from → join → select
1. from enrolleds: enrolleds 테이블 데이터 전체를 가져옵니다.
2. inner join courses on e.course_id = c.course_id: courses를 enrolleds 테이블에 붙이는데, enrolleds 테이블의 course_id와 동일한 course_id를 갖는 courses의 테이블을 붙입니다.
3. select * : 붙여진 모든 데이터를 출력합니다.
'Til' 카테고리의 다른 글
트리와 그래프 (0) | 2023.01.08 |
---|---|
[221031] OSI 7계층 & TCP/IP (0) | 2022.11.12 |
20221110 TIl (0) | 2022.11.10 |
20221110 TIl (0) | 2022.11.10 |
null인 필드는 response에서 제외하고 싶을때TIL 2022. 11. 1. 09:50 (0) | 2022.11.05 |