๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

SQLD ๋Œ€๋น„ ํ‚ค์›Œ๋“œ ์ •๋ฆฌ(2) - ๊น€๊ฐ•๋ฏผSQLPL๋‹˜ ๊ฐ•์˜

by hyerong 2022. 9. 3.

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 ํ™•์ธ 

 

์‹œ.ํ—˜.๋ฟŒ.์…”.