Skip to content

Commit b2b8a38

Browse files
authored
Merge pull request #21 from SSUMC-6th/randy/#5
[randy] Chapter 5. 실전 SQL - 어떤 Query를 작성해야 할까?
2 parents e69c83e + d76e7c2 commit b2b8a38

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

docs/chapter5/Ch05Keyword.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Chapter 5. 실전 SQL - 어떤 Query를 작성해야 할까?
2+
3+
4+
## ✅ JOIN 연산자
5+
- JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 주는 방법이다.
6+
7+
### 1. INNER JOIN
8+
- 조인하는 테이블의 ON 절의 조건이 일치하는 결과만 출력(만약 값이 존재하지 않으면 출력 x)
9+
- Exmaple
10+
11+
```
12+
select u.userid, name
13+
from usertbl as u inner join buytbl as b
14+
on u.userid=b.userid
15+
where u.userid="111" -- join을 완료하고 그다음 조건을 따진다.
16+
17+
```
18+
19+
### 2. OUTER JOIN
20+
- 내부 조인은 두 테이블에 모두 데이터가 있어야만 결과가 나오지만, 외부 조인은 한쪽에만 데이터가 있어도 결과가 나온다.
21+
22+
- 1️⃣ LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인, 첫 번째 테이블을 기준으로 한다.
23+
24+
```
25+
Ex.
26+
27+
SELECT STUDENT.NAME, PROFESSOR.NAME
28+
FROM STUDENT LEFT OUTER JOIN PROFESSOR -- STUDENT를 기준으로 왼쪽 조인
29+
ON STUDENT.PID = PROFESSOR.ID
30+
WHERE GRADE = 1
31+
32+
```
33+
- 2️⃣ RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인
34+
- 3️⃣ FULL OUTER JOIN: 왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인
35+
36+
37+

src/mission/chapter5/mission.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
-- 1. 내가 진행중, 진행 완료한 미션 모아서 보는 쿼리(페이징 포함)
2+
3+
```
4+
SELECT * FROM member_mission as mm
5+
WHERE member_id = 1 // 사용자 아이디는 1이라 가정
6+
AND mission_status in ("in_progress", "completed")
7+
ORDER BY mm.updated_at DESC
8+
LIMIT 10 offset (n-1)*10;
9+
```
10+
11+
-- 2. 리뷰 작성하는 쿼리, 사진의 경우는 일단 배제
12+
```
13+
SELECT member.name, review.score, review.body, review.created_at
14+
FROM review
15+
JOIN member ON review.member_id = member.id
16+
```
17+
--3. 홈 화면 쿼리 (현재 선택 된 지역에서 도전이 가능한 미션 목록, 페이징 포함)
18+
19+
```
20+
SELECT region.name AS region_name,
21+
(SELECT COUNT(*) FROM member_mission WHERE member_id = 1 AND status = 'complete') AS complete_count,
22+
store.name AS store_name,
23+
mission.deadline, mission.mission_spec, mission.reward,
24+
member_mission.status
25+
FROM member_mission
26+
JOIN mission ON member_mission.mission_id = mission.id
27+
JOIN store ON mission.store_id = store.id
28+
JOIN region ON store.region_id = region.id
29+
JOIN member ON member_mission.member_id = member.id
30+
WHERE member.id = 1
31+
AND mission.created_at < (SELECT created_at FROM mission where id = 1)
32+
ORDER BY mission.created_at DESC
33+
LIMIT 10;
34+
```
35+
36+
-- 4. 마이 페이지 화면 쿼리
37+
```
38+
SELECT member.name, member.email, member.point
39+
FROM member
40+
WHERE member.id = 1;
41+
```

0 commit comments

Comments
 (0)