SQLD ์ํ ์ ์ด์ ๋ฆฌํ๊ธฐ์ ์ข๋ค๊ณ ์ ๋ช ํ ์ ํ๋ธ ๊ฐ์์ ๋ด์ฉ ์ ๋ฆฌ์ ๋๋ค.
๊น๊ฐ๋ฏผ ๊ฐ์ฌ๋๊ป์ ์ ํ๋ธ์ ์ ๋ก๋ ํด์ฃผ์ SQLD ์ต์ข ์ ๋ฆฌ๊ฐ์ 2ํธ์ ๋ด์ฉ์ ํค์๋๋ง ์ ๋ฆฌํ์ต๋๋ค.
๋ฒ์๋ ์๋์ฐ ํจ์๋ถํฐ ์ธ๋ฑ์ค์ ๋๋ค. SQL ์๊ฒฉ ๊ฒ์ ์ค์ ๋ฌธ์ ๋ฌธ์ ์ง ๋ฒ์๋ก๋ 2๋จ์์ 2์ฅ์ ๋ง์ง๋ง๋ถํฐ 3์ฅ๊น์ง์ ๋ด์ฉ์ด๊ฒ ๋ค์!
์ํ๊น์ง ์๊ฐ์ด ์ด๋ฐํด์ ์์์ ๋ชป ๋ณด์๋ ๋ถ๋ค์ ๊ฐ์์ ์ธ๊ธ๋ ํค์๋๋ฅผ ๋ชจ๋ ์๋ ์ ๋ฆฌํด๋์์ผ๋ ํ์ธํ์๊ธฐ ๋ฐ๋๋๋ค.
https://www.youtube.com/watch?v=PjCSvexo3Ow
1. ์๋์ฐ ํจ์ [๋ฌด์กฐ๊ฑด ๊ธฐ์ถ ๋ฌธ์ ํ๊ธฐ! ๋ง์ด ํ๊ธฐ! ๊ผญ ๋ณด๊ธฐ!]
- Rows, Range ํจ์์ ์ฐจ์ด์ ์์๋๊ธฐ. -> Range์ ๊ฐ์ ๊ฐ์ด ์๋์ง ํ์ธํ ๊ฒ(๋ฒ์๋ผ์ ๊ฐ์ ๊ฐ ๋์ฌ ํ๋ฅ ์ด ์์)
- Rank : ์ค๋ณต์ ๊ฑด๋๋ด๋ค, Dense Rank : ๊ฑด๋๋ฐ์ง ์๋๋ค
- Patition by, order by ์ ๋ณด๊ธฐ
2. ๊ณ์ธตํ ์ง์
- Prior ์์ ๋ฐ์ดํฐ = ๋ถ๋ชจ ๋ฐ์ดํฐ(ํ์๋ถ) : ๋ถ๋ชจ ๋ฐ์ดํฐ์์ ์์์ผ๋ก ๊ฐ๋ฉด ์๋ฐฉํฅ(๋ถ์์)
=> ๋ถ๋ชจ๋ฐ์ดํฐ = Prior ์์ ๋ฐ์ดํฐ (3๊ฐ์ง ๋ชจ๋ ๊ฐ์ ์๋ฏธ)
- sql๋ฌธ ์ ๋ ์ค์ต ๋ฌธ์ ํ์ด๋ด์ผ ํจ (์๋ ๊ทธ๋ฆผ์ฒ๋ผ)
3. ์ ์ฐจํ PL/SQL
- Exception : ์๋ต ๊ฐ๋ฅ
- Procedure, trigger, userdefinde function ์ฐจ์ด์ ์๊ธฐ
4. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
5. ์ํฐํฐ
- ์ ๋ฌด ์ ๊ด๋ฆฌํ๊ณ ์ ํ๋ ๋์ ex. ํ์
- ์ํฐํฐ์ ํน์ง ์๊ธฐ
- ์ํฐํฐ ๋ถ๋ฅ ; ์ ํ/๊ฐ๋ /์ฌ๊ฑด, ๊ธฐ๋ณธ/์ค์ฌ/ํ์ ๊ฐ๊ฐ์ ๊ฐ๋ ์๊ธฐ
6. ์์ฑ
- ์ํฐํฐ ๋ด์์ ์ธ์คํด์ค์ ํน์ง, ๊ณ ์ ํ ์ฑ์ง
- ์์ฑ์ ๋ถ๋ฅ : ๊ธฐ๋ณธ/์ค๊ณ/ํ์
7. ๋๋ฉ์ธ [์ฃผ์ ๊น๊ฒ ๋ณด๊ธฐ]
- ๋ฐ์ดํฐ ์ ํ, ํฌ๊ธฐ, ์ ์ฝ ์กฐ๊ฑด ๋ชจ๋ ๋๋ฉ์ธ
- check, primary key ๋ชจ๋ ๋๋ฉ์ธ์ ํด๋น
8. ๊ด๊ณ
- IE ํ๊ธฐ๋ฒ : ๋ค๋ชจ๋ ๋ฐ์ค๋ก / Barker : ๋ฅ๊ทผ ๋ฐ์ค(UID Bar์ฌ์ฉ) -> ๊ฐ๊ฐ์ ์ฐจ์ด, ์๊น์ ์๊ธฐ
- ๊ด๊ณ ์ ํ์ฌํญ ํ๊ธฐ๋ฒ ๊ฐ๊ฐ ๊ทธ๋ฆผ ์๊ธฐ
- ์๋ณ์, ๋น์๋ณ์ ํ๊ธฐ ERD ์ ์ , ์ค์ ๊ฐ๊ฐ ๋น๊ต
9. ์๋ณ์
- ์ฃผ์๋ณ์์ ํน์ง : ์ ์ผ์ฑ/์ต์์ฑ/๋ถ๋ณ์ฑ/์กด์ฌ์ฑ => 4๊ฐ์ง ๋ค ๋ง์กฑํ๋ฉด ํ๋ณดํค ๊ฐ๋ฅ => ๋ํ๋ก ์ ์ ๋๋ฉด PK ๊ธฐ๋ณธํค
- ๋์ฒดํค ๊ฐ๋ ์๊ธฐ
10. ์๋ณ์ ๊ด๊ณ, ๋น์๋ณ์ ๊ด๊ณ
- ๊ฐํ ๊ด๊ณ / ์ฝํ ๊ด๊ณ
- ๋จ์ : sql๊ตฌ๋ฌธ์ด ๋ณต์กํด์ง๋ค. PK ์์ฑ์๊ฐ ์ฆ๊ฐํ๋ค / ๋ถํ์ํ JOIN ๋ง์์ง-> ์๋ ๋๋ ค์ง
- ERD์ ๊ทธ๋ฆผ ์์๋๊ธฐ
- ์์ ์ด ์ข์->์ฐํ๋ก ์ด๋
- ๊ด๊ณ๋ช ๋ฐ๋์ ํ๊ธฐ ์ํด๋ ๋จ
- UML ->๊ฐ์ฒด์งํฅ๋ชจ๋ธ์์๋ง ์ฐ์ธ๋ค
11. ์ฑ๋ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
- ์ฑ๋ฅ ๊ฐ์ ๋ฐฉ๋ฒ => ์ํคํ ์ฒ ๋ชจ๋ธ๋ง : ํํฐ์ , ํ ์ด๋ธ -> ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ / SQL ๋ช ๋ น๋ฌธ : ์กฐ์ธ์ํ์๋ฆฌ, optimizer, ์คํ๊ณํ
12. ์ ๊ทํ [๋งค์ฐ ์ค์!!! ์ ๊ทํ ํ๋ ๋ฐฉ๋ฒ๋ ๋ณด๊ณ ๊ฐ๊ธฐ!!!!!!]
- 1์ฐจ(์์์ฑ), 2์ฐจ(๋ถ๋ถํจ์์ข ์), 3์ฐจ(์ดํํจ์์ข ์), BCNF๊น์ง ๋ชจ๋ ํ์ธํ๊ธฐ
- 2์ฐจ, 3์ฐจ ์์๊น์ง ํ์ธํด๋ณด๊ธฐ
- ์ด์ ํ์ ์์๊น์ง ์ ๋ณด๊ธฐ : ์ญ์ /์ฝ์ ์ด์
- ์ฑ๋ฅ : select์ ์์๋ join๋๋งค ์๋๊ฐ ๋๋ ค์ง ์๋ ์๋ค, insert-update๋ฌธ์์๋ ๋นจ๋ผ์ง์์๋ค.
13. ๋ฐ์ ๊ทํ [2020๋ ๋ถํฐ ์ถ์ ๋ด์ฉ ๋ง์ด ์ค์ด๋ฌ]
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ํด์นจ : ๋๋๋ฒ์, ๋ฒ์์ฒ๋ฆฌ, ํต๊ณ์ฒ๋ฆฌ => ์์ฉ/ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค/๋ทฐ ์ฒ๋ฆฌ => ํ ์ด๋ธ, ์์ฑ, ๊ด๊ณ ๋ฐ์ ๊ทํ
- - ํ ์ด๋ธ : ๋ณํฉ (1:1, 1:m, ์ํผ/์๋ธ), ๋ถํ (๋ถ๋ถ, ํต๊ณ, ์ค๋ณตํ ์ด๋ธ)
- - ์์ฑ : ํ์/ ์ค๋ฅ/์ด๋ ฅ ์ปฌ๋ผ ์ถ๊ฐ/PK/์ค๋ณต์์ฑ
- - ๊ด๊ณ : ์ค๋ณต ๊ด๊ณ ์ถ๊ฐ
-> ์ ๊ธฐ๋ฒ ๋ด์ฉ ๊ด๊ณ, ์์ฑ ๊ฐ๊ฐ ์ ์์ ๋ด์ฉ ์๊ธฐ
14. ๋ฐ์ดํฐ์ ๋ฐ๋ฅธ ์ฑ๋ฅ
- row migration, chaning ์ฝ์ด๋ณด๊ธฐ => ํด๊ฒฐ ๋ฐฉ๋ฒ : list, range, hash ๊ฐ๊ฐ์ ํน์ง ์๊ธฐ
- ํน์ง : ๊ด๋ฆฌ์ ์ฉ์ด์ฑ -> ํด์ฌ ๊ด๋ฆฌ ์ด๋ ค์, range ๊ด๋ฆฌ ์ฌ์
15. ์ํผ/์๋ธ ํ์
- ์ฉ๋, ํธ๋์ญ์ : ์ ์ ๊ฒฝ์ฐ 1:1 ๋ฐฉ๋ฒ ์ฌ์ฉ / ํด ๊ฒฝ์ฐ : 1)๊ณตํตor์ฐจ์ด๋ฅผ ๊ฐ์ง๊ณ ๋ณ๊ฐ์ ํ์ ์ผ๋ก ๋ค์ด์จ๋ค. 2)์ ์ฒด๋ฅผ ํตํฉํ ํ์ ์ผ๋ก ๋ค์ด์จ๋ค. -> ๊ทธ๋ฆผ์ ์ฃผ๊ณ ์ด๋ค ๋ฐฉ์์ or ์ธ์ ๋ฌด์์ ์ฌ์ฉํด์ผํ๋์ง ๋ฌป๋ ๋ฌธ์
16. ๋ถ์ฐ ๋ฐ์ดํฐ ๋ฒ ์ด์ค
- ํฌ๋ช ์ฑ : ์ํ์ ์ ์๋์ด [์ถ์ ์ค์ด๋ฌ]
- ํน์ง : ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ํด์น ์ ์์
17. ์กฐ์ธ ์ํ ์๋ฆฌ [๋ฌธ์ ๋ง์ด ํ๊ฒ!!!! 4๊ฐ๊น์ง๋ ๋์์]
- NL : ๋๋ค ์ก์ธ์ค, ๋์ฉ๋ sort ์์ ์ ์ ๋ฆฌ
- Sort merge : ์กฐ์ธ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ, ๋ฑ๊ฐ/๋น๋ฑ๊ฐ ์กฐ์ธ ๊ฐ๋ฅ ์ฌ๋ถ
- hash : ๋ฑ๊ฐ ์กฐ์ธ๋ง ๊ฐ๋ฅ, ์ ํ ํ ์ด๋ธ์ด ์๋ค. ํด์ฌ ์ฒ๋ฆฌ๋ก ์ธํด ๋ณ๋์ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ๋ค.
18. ์ตํฐ๋ง์ด์ [์ถ์ ์ค์ด๋ฌ]
- CBO(๊ฒฝ๋ก ๊ธฐ์ค), RBO(๊ท์น ๊ธฐ์ค) ๊ฐ๊ฐ ์ ์ ์ ๋ ์์๋๊ธฐ
19. ์ธ๋ฑ์ค
- ์ธ๋ฑ์ค๊ฐ ์ธ์ ์ฌ์ฉ๋๋์ง ํ์ธ : ๋ถ์ ํ, likeํจ์, ๋ฌต์์ ํ๋ณํ์ ์ฌ์ฉํ์ง ์์
- ์ธ๋ฑ์ค ์ฌ์ฉ์ ์ฑ๋ฅ ์ ํ๋๋ ๊ฒฝ์ฐ : insert, update, delete (DML) ๊ฐ ์์ ๊ฒฝ์ฐ. [์ ๋ณด๊ธฐ!!]
20. ์คํ ๊ณํ
- ์คํ ์์ : ๋ค์ฌ์ฐ๊ธฐ๋ก ์ธํด ์คํ ์์ ๋ฌป๋ ๋ฌธ์
-> ๊ฐ์ ๋ ๋ฒจ(๊ฐ์ ์ฐจ์๋งํผ ๋ค์ฌ์ฐ๊ธฐ : ๋จผ์ ์๋ ๋ ๋ฒจ๋ถํฐ ์ ์ด์ฃผ๊ธฐ)
์ถ๊ฐ)
์ ๊ทํ ๋ฐ๋์ ์์ง!
๋น์นธ ๋ฌธ์ : PIVOT๊ณผ UNPIVOT ๋ ์ค ๋ฌด์์ ์ฌ์ฉํ ์ง ํ์ธ
merge ํ์ธ
์.ํ.๋ฟ.์ .