๋ฐ์ดํฐ๋ฒ ์ด์ค๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ตฌ์กฐํ๋ ์ ๋ณด ๋๋ ๋ฐ์ดํฐ์ ์กฐ์งํ๋ ๋ชจ์์ผ๋ก์ ์ผ๋ฐ์ ์ผ๋ก ์ปดํจํฐ ์์คํ ์ ์ ์์ ์ผ๋ก ์ ์ฅ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๋ฐ์ ์ผ๋ก DBMS์ ์ํด ์ ์ด๋๋ค.
์ฐ๊ฒฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ๋ฐ์ดํฐ์ DBMS๋ฅผ ๋ฌถ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ (์ค์ฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ผ๊ณ ํ๋ค.
SQL๊ณผ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐจ์ด์ ์?
- SQL
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก SQL์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ์กฐ์ํ๋ค.
- ์คํค๋ง๊ฐ ๊ณ ์ ๋์ด ์์ผ๋ฉฐ ACID ํธ๋์ญ์ ์ ์ง์ํ๋ค.
- ์คํค๋ง์ ๋ง์ถฐ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ช ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฅํ๋ค.
- ์์คํ ์ด ์ปค์ง๋ฉด ์ฟผ๋ฆฌ๊ฐ ๋ณต์กํด์ง๊ณ ์ฑ๋ฅ์ด ์ ํ๋จ.
- NoSQL
- ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
- ์คํค๋ง๊ฐ ์ ์ฐํ๊ณ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ ํฉํ๋ค
- ๋์ ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
- ๋ฐ์ดํฐ ๋ถ์ฐ์ด ์ฉ์ดํ๊ณ Scale-out์ด ๊ฐ๋ฅํ๋ค.
- ๋ฐ์ดํฐ ์ค๋ณต์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ฐ์ฐ์ด ์ค๋ ๊ฑธ๋ฆผ
- ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ด ์ด๋ ต๋ค.
ํธ๋์ญ์ ์ด๋?
- ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํ๋๋ ์ผ๋ จ์ ์์ ์ ํ๋์ ๋จ์๋ก ๋ฌถ์ ๊ฒ์ ์๋ฏธํ๋ค.
- ํธ๋์ญ์
์ ์ฃผ์ ์์ฑ(ACID)
- ์์์ฑ (Atomic)
- ํธ๋์ญ์ ์ด ์์ ํ ์คํ๋๊ฑฐ๋ ์ ํ ์คํ๋์ง ์์์ผ ํจ์ ๋ณด์ฅ.
- ํธ๋์ญ์ ์ ๋ชจ๋ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๊ฑฐ๋, ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ชจ๋ ์์ ์ด ๋กค๋ฐฑ๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ์ํ๋ก ๋์๊ฐ๋ค.
- ํธ๋์ญ์ ๋ด์ ๋ชจ๋ ์ฐ์ฐ์ด ํ๋์ ๋จ์๋ก ์ฒ๋ฆฌ๋จ์ ์๋ฏธ
- ์ผ๊ด์ฑ (Consistency)
- ํธ๋์ญ์ ์ด ์๋ฃ๋ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํด์ผ ํจ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํธ๋์ญ์ ์คํ ์ ํ์ ๋ชจ๋ ์ ์ฝ ์กฐ๊ฑด๊ณผ ๊ท์น์ ๋ง์กฑํด์ผํจ.
- ๊ฒฉ๋ฆฌ์ฑ (Isolation)
- ๋์์ ์คํ๋๋ ํธ๋์ญ์ ์ด ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋์ด์ผ ํจ.
- ์คํ๋๋ ํธ๋์ญ์ ๋ค์ด ์๋ก์ ์์ ์ ์ํฅ์ ์ฃผ์ง ์๋๋ก ๋ณด์ฅํด์ผํ๋ค.
- ์ง์์ฑ (Durability)
- ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ๊ทธ ์ํ๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด์ผ ํจ.
- ์์คํ ์ฅ์ ๋ฐ์์์๋ ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๋ ์์ค๋์ง ์๊ณ ์ง์์ ์ผ๋ก ์ ์ง๋์ด์ผ ํ๋ค.
- ์์์ฑ (Atomic)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทํ๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์์ ๋ฐ์ดํฐ ์ค๋ณต์ ์ค์ด๊ณ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์ต์ ํํ๋ ๊ณผ์ ์ด๋ค.
๋ฐ์ดํฐ์ ์ค๋ณต์ ์ต์ํ ํ๊ณ , ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ฉฐ, ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ฑ๋ฅ ํฅ์์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
- ์ 1 ์ ๊ทํ
- ํ ์ด๋ธ์ ๋ชจ๋ ์ด์ด ์์ ๊ฐ์ ๊ฐ์ ธ์ผํ๋ฉฐ, ๋ฐ๋ณต ๊ทธ๋ฃน์ด ์์ด์ผ ํจ.
- ์ 2 ์ ๊ทํ
- ์ 1 ์ ๊ทํ์ ๋ง์กฑํ๊ณ , ๋ชจ๋ ๋น ์ฃผ์ ์์ฑ์ด ๊ธฐ๋ณธ ํค์ ์ ์ฒด์ ๋ํด ์์ ํจ์ ์ข ์์ ๊ฐ์ ธ์ผํจ(๋ถ๋ถ ์ข ์ x)
- ๊ธฐ๋ณธํค๊ฐ ๋ณตํฉ ํค์ผ ๋, ๊ธฐ๋ณธํค์ ์ผ๋ถ๊ฐ ๊ฒฐ์ ํ๋ ์์ฑ์ด ์์ด์ผ ํ๋ค.
- ์ 3 ์ ๊ทํ
- ์ 2 ์ ๊ทํ์ ๋ง์กฑํ๊ณ , ๋ชจ๋ ๋น ์ฃผ์ ์์ฑ์ด ๊ธฐ๋ณธ ํค์ ๋ํด ์ดํ์ ์ข ์์ด ์์ด์ผ ํ๋ค.
- ๋น ์ฃผ์ ์์ฑ์ด ๊ธฐ๋ณธํค๊ฐ ์๋ ๋ค๋ฅธ ๋น์ฃผ์ ์์ฑ์ ์์กดํด์๋ ์๋จ
- ๋ณด์ด์ค-์ฝ๋ ์ ๊ทํ(BCNF)
- ์ 3 ์ ๊ทํ์ ๋ง์กฑํ๋ฉด์, ๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค์ฌ์ผ ํจ.
๋น ์ ๊ทํ๋?
๋น ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์์ ์ฑ๋ฅ ํฅ์์ ์ํด์ ์๋์ ์ผ๋ก ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ์ ์ค๋ณต์ ์ถ๊ฐํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ VIEW ์ TABLE์ ์ฐจ์ด์
- TABLE
- ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๊ตฌ์กฐ.
- ๋ฐ์ดํฐ๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ๋์ด ์์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์์ , ์ญ์ ํ ์ ์๋ค.
- VIEW
- ํ ์ด๋ธ์ ๊ฐ์ ํ ์ด๋ธ. ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ ์ปค๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํจ.
- ๋ฐ์ดํฐ ์กฐํ์ ํธ์๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋จ์ํํ๋๋ฐ ์ฌ์ฉ๋จ.
ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค?
๋์์ ์คํ๋๋ ํธ๋์ญ์ ๋ค์ด ์๋ก ์ด๋ป๊ฒ ์ํธ์์ฉํ ์ง ์ ์ํ๋ ์์ฑ.
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ํธ๋์ญ์ ์ด ์ถฉ๋ ์์ด ์ผ๊ด์ฑ ์๋ ์ํ๋ก ์ ์ง๋๋๋ก ๋ณด์ฅํ๋ค.
๊ฒฉ๋ฆฌ ์์ค์ด ๋์ ์๋ก ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๋ณด์ฅ๋์ง๋ง, ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
- Read Uncommitted (Lv. 0)
- ํธ๋์ญ์ ์ด ์์ง ์ปค๋ฐ๋์ง ์์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ณ๊ฒฝ์ฌํญ์ ์ฝ์ ์ ์์
- ๋ํฐ ์ฝ๊ธฐ(Dirty Read)๊ฐ ๋ฐ์ํ์ฌ ์ปค๋ฐ๋์ง ์์ ํธ๋์ญ์ ์ ๋ณ๊ฒฝ์ฌํญ์ ์ฝ์์ ๋, ๊ทธ ํธ๋์ญ์ ์ด ๋กค๋ฐฑ๋๋ฉด ์ฝ์ ๋ฐ์ดํฐ๊ฐ ๋ฌดํจ๊ณผ ๋๋ค.
- ๋ฎ์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก ์ฑ๋ฅ์ด ๋์ง๋ง, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ฌธ์ ๋ฅผ ์ด๋ํ ์ ์๋ค.
- ์ฑ๋ฅ์ด ์ค์ํ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ด ์์ ๋ ์ ์ฉํ์ง๋ง ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ฌธ์ ๊ฐ ์๋ค.
- Read Committed (Lv. 1)
- ํธ๋์ญ์ ์ ์ปค๋ฐ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ง ์ฝ์ ์ ์๋ค.
- ๋น ๋ฐ๋ณต ์ฝ๊ธฐ(Non-Repeatable Read) ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ํธ๋์ญ์ ๋ด์์ ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ ์ฌ๋ฌ๋ฒ ์คํํ ๋ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
- ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ ์ ํฉํจ.
- Repeatable Read (Lv. 2)
- ํธ๋์ญ์ ์ด ์์๋ ์ดํ ์ฝ์ ๋ฐ์ดํฐ๋ ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- ํฌํ ์ฝ๊ธฐ(Phantom Read)๊ฐ ๋ฐ์ํ์ฌ ๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ํธ๋์ญ์ ๋ด์์ ์ฌ๋ฌ๋ฒ ์คํ ๋ ๋, ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ์๋ก์ด ํ์ด ํฌํจ๋ ์ ์๋ค.
- ๋ฐ์ดํฐ ์ฝ๊ธฐ๊ฐ ๋ฐ๋ณต๋๋ ๊ฒฝ์ฐ์ ์ ์ฉ.
- Serializable(Lv. 3)
- ํธ๋์ญ์ ์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋์ํ๋ค. ๋ชจ๋ ํธ๋์ญ์ ์ด ์์ ํ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์๋ก ๊ฐ์ญํ์ง ์๋๋ค.
- ์ฑ๋ฅ์ด ๋ฎ์์ง ์ ์๊ณ , ๋ง์ ์ ๊ธ๊ณผ ์กฐ์ ์ด ํ์ํ๋ค.
- ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ง๋ง, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๊ฐ์ฅ ์ ๋ณด์ฅ๋๋ค.
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ต์ฐ์ ์ผ๋ก ๊ณ ๋ คํ ๋ ์ฌ์ฉ
SQL์ JOIN๋ค์ ์ฐจ์ด์
- INNER JOIN
- ๋ ํ ์ด๋ธ ๊ฐ์ ๊ณตํต๋ ์ด์ ๊ฐ์ด ์ผ์นํ๋ ํ๋ง ๋ฐํํ๋ค. ์์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ง ํฌํจ.
- ํน์ง
- ์ผ์นํ๋ ํ๋ง ๋ฐํํ๋ค.
- ๊ณตํต๋ ์ด ๊ฐ์ด ์๋ ํ์ ์ ์ธ
- LEFT [OUTER] JOIN
- ์ผ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ์ผ์นํ๋ ํ์ ๋ฐํํ๋ค. ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๊ฐ์ NULL๋ก ํ์ํ๋ค.
- ํน์ง
- ์ผ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ ๋ฐํ
- ์ค๋ฅธ์ชฝ ํ ์ด๋ธ๊ณผ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ๋ NULL
- FULL [OUTER] JOIN
- FULL JOIN์ ์์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ๋ฐํํ๋ฉฐ, ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ ์ํ ํ ์ด๋ธ ๊ฐ์ NULL๋ก ํ์ํ๋ค.
- ํน์ง
- ์์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ ๋ฐํ
- ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ NULL
- CROSS JOIN
- ๋ ํ ์ด๋ธ ๊ฐ์ ๋ชจ๋ ์กฐํฉ์ ๋ฐํ. ํ ์ด๋ธ์ ํ ์๋ฅผ ๊ณฑํ ๋งํผ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
- ํน์ง
- ๋ ํ ์ด๋ธ์ ์นดํฐ์์ ๊ณฑ
- ๋ชจ๋ ์กฐํฉ์ ์์ฑ
์์
TableA
id | name | dept_id | location_id |
1 | Alice | 10 | 100 |
2 | Bob | 20 | 200 |
3 | Charlie | 10 | 100 |
4 | David | 30 | 300 |
TableB
id | name | city |
1 | Alice | Seoul |
2 | Bob | Busan |
5 | Eve | Daejeon |
4 | David | Ulsan |
1. INNER JOIN : ๋ ํ ์ด๋ธ ๊ฐ์ ์ผ์น๋๋ ํ๋ง ๋ฐํ
SELECT A.*, B.city
FROM TableA A
INNER JOIN TableB B ON A.id = B.id AND A.name = B.name;
id | name | dept_id | location_id | city |
1 | Alice | 10 | 100 | Seoul |
2 | Bob | 20 | 200 | Busan |
4 | David | 30 | 300 | Ulsan |
2. LEFT JOIN : ์ผ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ์ผ์นํ๋ ํ์ ๋ฐํ
SELECT A.*, B.city
FROM TableA A
LEFT JOIN TableB B ON A.id = B.id AND A.name = B.name;
id | name | dept_id | location_id | city |
1 | Alice | 10 | 100 | Seoul |
2 | Bob | 20 | 200 | Busan |
3 | Charlie | 10 | 10 | NULL |
4 | David | 30 | 300 | Ulsan |
3. RIGHT JOIN : ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ๊ณผ ์ผ์ชฝ ํ ์ด๋ธ์ ์ผ์นํ๋ ํ์ ๋ฐํ
SELECT A.*, B.city
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id AND A.name = B.name;
id | name | dept_id | location_id | city |
1 | Alice | 10 | 100 | Seoul |
2 | Bob | 20 | 200 | Busan |
NULL | Eve | NULL | NULL | Daejeon |
4 | David | 30 | 300 | Ulsan |
4. FULL JOIN : ์์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ๋ฐํํ๋ฉฐ, ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ๋ ์๋ ํ ์ด๋ธ ๊ฐ์ NULL๋ก
SELECT A.*, B.city
FROM TableA A
FULL JOIN TableB B ON A.id = B.id AND A.name = B.name;
id | name | dept_id | location_id | city |
1 | Alice | 10 | 100 | Seoul |
2 | Bob | 20 | 200 | Busan |
3 | Charlie | 10 | 100 | NULL |
NULL | Eve | NULL | NULL | Daejeon |
4 | David | 30 | 300 | Ulsan |
5. CROSS JOIN : ๋ ํ ์ด๋ธ๊ฐ์ ๋ชจ๋ ์กฐํฉ์ ๋ฐํ
TableA : 3 x TableB : 4 = 12
Distinct์ GROUP BY์ ์ฐจ์ด์ ?
- Distinct์ GROUP BY ๋ชจ๋ ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์์ฝํ๋ ๋ฐ ์ฌ์ฉ๋์ง๋ง ๋ชฉ์ ๊ณผ ๋์ ๋ฐฉ์์ ์ฐจ์ด๊ฐ ์๋ค
- "DISTINCT"
- ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ณ ๊ณ ์ ํ ๊ฐ์ ๋ฐํํ๋๋ฐ ์ฌ์ฉ๋๋ค.
- ์ฃผ๋ก ์ ํ๋ ์ด์ ๊ณ ์ ํ ๊ฐ์ ์ป๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- ์ง๊ณ ํจ์์๋ ์ง์ ์ ์ธ ๊ด๊ณ๋ ์๋ค.
- "GROUP BY"
- ์ฃผ์ด์ง ์ด์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ๊ณ , ๊ฐ ๊ทธ๋ฃน์ ๋ํด ์ง๊ณ ํจ์๋ฅผ ์ ์ฉํ๋๋ฐ ์ฌ์ฉ๋จ.
- SUM, COUNT, AVG์ ๊ฐ์ ์ง๊ณํจ์ํ ํจ๊ป ์ฌ์ฉ๋๋ค.
- ๊ฐ ๊ทธ๋ฃน์ ๋ํด ํ๋์ ๊ฒฐ๊ณผ ํ์ ์์ฑํจ.
SELECT ์ฟผ๋ฆฌ์ ์คํ ์์
- FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT
Having ๊ณผ WHERE์ ์ฐจ์ด
- Having
- ๊ทธ๋ฃนํ๋ ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋ง ํ๋๋ฐ ์ฌ์ฉ
- GROUP BY ์ ์ดํ์ ์์น
- ์ง๊ณํจ์ ์ฌ์ฉ ๊ฐ๋ฅ
- Where
- ๊ฐ๋ณ ํ์ ํํฐ๋งํ ๋ ์ฌ์ฉ
- GROUP BY ์ ์ด์ ์ ์์น
- ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค INDEX๋?
- INDEX๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ก, ํ ์ด๋ธ ์ฒ์๋ถํฐ ๋๊น์ง ๊ฒ์ํ์ง ์๊ณ , ์ธ๋ฑ์ค๋ฅผ ๊ฒ์ํ์ฌ ํด๋น ์๋ฃ์ ํ ์ด๋ธ๋ก ์์ธ์คํ ์ ์๊ฒ ํด์ค๋ค.
- ์ฅ์
- ์ธ๋ฑ์ค๋ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํด์ ORDER BY ์ฐ์ฐ์ ๋น์ฉ์ ์ค์ผ ์ ์๋ค.
- WHERE์ด๋ JOIN์ ์์ฃผ ์ฌ์ฉ๋๋ ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ๋ฉด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ํฌ๊ฒ ์ค๋ฅธ๋ค.
- ๋จ์
- ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ถ๊ฐ์ ์ธ ๊ณต๊ฐ์ด ํ์ํ๋ค.
- INSERT, UPDATE, DELETE ์์ ์์ ์ธ๋ฑ์ค๋ ์ ๋ฐ์ดํธ ํด์ผํ๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋๊ฐ ํฌ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ(Sharding)์ด๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์ด๋ ๋๊ท๋ชจ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฌ๊ฐ์ ์์ ํํฐ์ (์ฌ๋)๋ก ๋ถํ ํ๋ ๊ธฐ์ ์ด๋ค.
๊ฐ ์ค๋๋ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋์ํ๋ฉฐ ์ ์ฒด ๋ฐ์ดํฐ์ ๋ถ๋ถ์งํฉ์ ์ ์ฅํ๋ค.
TRIGGER๋?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ ์ด๋ฒคํธ๋ ์กฐ๊ฑด์ด ๋ฐ์ํ์ ์ ์๋์ผ๋ก ์คํ๋๋ ํ๋ก์์ ์ด๋ค.
- ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ , ๋ณต์กํ ๋น์ฆ๋์ค ๊ท์น์ ๊ตฌํํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ฐ ์ฌ์ฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ง์ ํธ์ถํ์ง ์๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋์ผ๋ก ํธ์ถํ๋ค.
'๐CS-๋ฉด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์๋ฃ๊ตฌ์กฐ (0) | 2024.07.31 |
---|---|
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์ด์์ฒด์ (0) | 2024.07.31 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์น / ๋คํธ์ํฌ (0) | 2024.07.29 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์๋ฐ (0) | 2024.07.29 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - Spring/SpringBoot (0) | 2024.07.27 |