๐Ÿ’พ SQL_

[SQLD] ๋ชจ์˜๊ณ ์‚ฌ ๋ฌธ์ œํ’€์ด & ๊ธฐ์–ตํ•ด์•ผํ•  ๋‚ด์šฉ๋“ค

Joyfullyever 2025. 3. 7. 19:14

โœด๏ธŽ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํˆฌ๋ช…์„ฑ ์ข…๋ฅ˜

• ๋ถ„ํ•  ํˆฌ๋ช…์„ฑ

• ์œ„์น˜ ํˆฌ๋ช…์„ฑ

• ์ง€์—ญ ํˆฌ๋ช…์„ฑ

• ์ค‘๋ณต ํˆฌ๋ช…์„ฑ

• ๋ณ‘ํ–‰ ํˆฌ๋ช…์„ฑ

• ์žฅ์•  ํˆฌ๋ช…์„ฑ

 

โœด๏ธŽ SQL๋ฌธ์—์„œ๋Š” NULL๊ณผ NULL ๋น„๊ต ๋ถˆ๊ฐ€๋Šฅ

→ ๊ณต์ง‘ํ•ฉ. NULL ๊ฐ’์„ ์กฐํšŒํ•˜๋ ค๋ฉด IS NULL / ์•„๋‹Œ ๊ฐ’์„ ์กฐํšŒํ•˜๋ ค๋ฉด IS NOT NULL

 

โœด๏ธŽ WINDOW FUNCTION

• RANK

• DENSE_RANK

• ROW_NUMBER

 

โœด๏ธŽ NULL ๊ฐ’ ์ €์žฅ

SQL Server : ์ธ๋ฑ์Šค ๋งจ ์•ž์— ์ €์žฅ

Oracle : ์ธ๋ฑ์Šค ๋งจ ๋’ค์— ์ €์žฅ

 

โœด๏ธŽ MOD

: ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ

Ex) MOD(7,3) = 1

 

โœด๏ธŽ ๊ทธ๋ฃนํ•จ์ˆ˜

: ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ NULL ๊ฐ’์€ ์—ฐ์‚ฐ์—์„œ ์ œ์™ธ

 

โœด๏ธŽ ERD ๊ด€๊ณ„์—์„œ ๊ณ„์ • ๊ทธ๋ฃน์€ ๋‹ค์ˆ˜์˜ ๊ณ„์ •์„ ํฌํ•จํ• ์ˆ˜๋„, ์•ˆํ• ์ˆ˜๋„ → Option

๊ณ„์ •์€ ๋ฐ˜๋“œ์‹œ ๋‹จ ํ•˜๋‚˜์˜ ๊ณ„์ • ๊ทธ๋ฃน์— ์†Œ์†๋˜์–ด์•ผ ํ•จ → Mandatory

 

โœด๏ธŽ Domain

: ์†์„ฑ์— ๋Œ€ํ•œ ๊ฐ’์˜ ๋ฒ”์œ„ ๋“ฑ ์ œ์•ฝ์‚ฌํ•ญ ๊ธฐ์ˆ 

 

โœด๏ธŽ Rank() Function

: ๊ฐ’์ด ๋™์ผํ•˜๋ฉด ๊ฐ™์€ ํ•จ์ˆ˜

 

โœด๏ธŽ EQUI JOIN

: ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธํ‚คโˆ™์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„์— ์˜ํ•ด ์„ฑ๋ฆฝํ•˜๋Š”๊ฑด ์•„๋‹˜

: JOIN ์นผ๋Ÿผ์ด 1:1๋กœ ๋งตํ•‘ํ•˜๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

โœด๏ธŽ CUBE

: CUBE ํ•จ์ˆ˜์— ์ œ์‹œ๋œ ์นผ๋Ÿผ์— ๋Œ€ํ•ด์„œ ๊ฒฐํ•ฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ง‘๊ณ„๋ฅผ ๊ณ„์‚ฐ

 

โœด๏ธŽ ์ธ๋ฑ์Šค

: ๋‚ด๋ฆผ์ฐจ์ˆœ ์ƒ์„ฑ & ์ •๋ ฌ

: ์ธ๋ฑ์Šค ๋ฒ”์œ„ ์Šค์บ”์€ ๊ฒฐ๊ณผ ๊ฑด์ˆ˜๋งŒํผ ๋ฐ˜ํ™˜ → ์—†๋‹ค๋ฉด ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ

 

โœด๏ธŽ ERD ์ž‘์„ฑ ์ˆœ์„œ

1. ์—”ํ„ฐํ‹ฐ๋ฅผ ๋„์ถœํ•˜๊ณ  ๊ทธ๋ฆผ

2. ์—”ํ„ฐํ‹ฐ ๋ฐฐ์น˜

3. ์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •

4. ๊ด€๊ณ„๋ช… ์„œ์ˆ 

5. ๊ด€๊ณ„ ์ฐธ์—ฌ๋„ ํ‘œํ˜„

6. ํ•„์ˆ˜ ์—ฌ๋ถ€ ํ‘œํ˜„

 

โœด๏ธŽ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋„คํŠธ์›Œํฌ์— ๋–จ์–ด์ ธ ์žˆ๋Š” DB๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผํ•จ → ์ฒ˜๋ฆฌ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•จ

 

โœด๏ธŽ ๋น„์‹๋ณ„์ž ๊ด€๊ณ„

: ๋ถ€๋ชจ ์—”ํ„ฐํ‹ฐ๋กœ๋ถ€ํ„ฐ ์†์„ฑ์€ ๋ฐ›์Œ

: ์ž์‹ ์—”ํ„ฐํ‹ฐ์˜ ์ฃผ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์†์„ฑ์œผ๋กœ๋งŒ ์‚ฌ์šฉ

 

โœด๏ธŽ ROWNUM

: SELECT๋ฌธ์—์„œ ํ–‰์ด ์ธ์ถœ๋  ๋•Œ ํ–‰์— ๋ถ€์—ฌ๋˜๋Š” ์ผ๋ จ๋ฒˆํ˜ธ

→ 1,2,3,4๋“ฑ์œผ๋กœ ์ธ์ถœํ•˜๊ณ  ์กฐ๊ฑด์— ๋ถ€์—ฌํ•˜๋ ค๋ฉด INLINE VIEW๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

 

โœด๏ธŽ HASH JOIN

: CPU์—ฐ์‚ฐ์ด ๋งŽ์ด ๋ฐœ์ƒ๋˜๋Š” ์กฐ์ธ → ์„ ํ–‰ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์•ผ ์œ ๋ฆฌํ•œ ์กฐ์ธ

• ํŠน์ง•

: ์กฐ์ธ ์นผ๋Ÿผ์˜ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

: HASH FUNCTION์„ ์ด์šฉํ•˜์—ฌ ์กฐ์ธ

⇒ "="๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์กฐ์ธ์ธ ๋™๋“ฑ ์กฐ๊ฑด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

⇒ ๋™์ผํ•œ ๊ฐ’์€ ํ•ญ์ƒ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ํ•ด์‹œ๋จ์„ ๋ณด์žฅ

⇒ Random Access๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ > Nested Loop Join์—์„œ ๋ฐœ์ƒํ•จ

 

โœด๏ธŽ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•  ๋•Œ ์ฒดํฌํ•ด์•ผํ•˜๋Š” ์‚ฌํ•ญ → ๊ด€๊ณ„์—ฐ๊ฒฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋™์‚ฌ๊ฐ€ ์žˆ๋Š”๊ฐ€?

 

โœด๏ธŽ Natural Join

: ๋‘ ํ…Œ์ด๋ธ”๊ฐ„ ๋™์ผํ•œ ์นผ๋Ÿผ ์ด๋ฆ„์„ ๊ฐ€์ง„๊ฒƒ์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” ์กฐ์ธ

 

โœด๏ธŽ Self Join

: ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ ๋‘๊ฐœ์˜ ์นผ๋Ÿผ์ด ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ

 

โœด๏ธŽ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ(ํ–‰)๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด์„  ์ธ๋ฑ์Šค๋ณด๋‹จ FULL SCAN์ด ํšจ์œจ์  → ๋ฐ”๋กœ ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰

 

โœด๏ธŽ ์ธ๋ฑ์Šค ์นผ๋Ÿผ ์ˆœ์„œ๋ฅผ ์•„๋ฌด๋ฆฌ ๋ฐ”๊ฟ”๋„ ํ…Œ์ด๋ธ” Random Access ํšŸ์ˆ˜๋Š” ์ค„์ง€ ์•Š์Œ

 

โœด๏ธŽ ์ƒํ˜ธ ์—ฐ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ

: ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ํ–‰ ์ˆ˜ ๋งŒํผ ์‹คํ–‰๋˜๋Š” ์ฟผ๋ฆฌ → ์‹คํ–‰ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋–จ์–ด์ง

 

โœด๏ธŽ ํ•˜๋‚˜์˜ ์†์„ฑ์€ ํ•˜๋‚˜์˜ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, ํ•˜๋‚˜ ์ด์ƒ์˜ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ ์ •๊ทœํ™” ํ•„์š”

 

โœด๏ธŽ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ถŒํ•œ

: ๊ฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ถŒํ•œ์€ ๊ฐ ํ…Œ์ด๋ธ”์˜ ์†Œ์œ ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์Œ → ์†Œ์œ ์ž๊ฐ€ ๊ถŒํ•œ์„ ๋ถ€์—ฌ์•ˆํ•œ๋‹ค๋ฉด, ๋‹ค๋ฅธ ์œ ์ € ํ…Œ์ด๋ธ”์— ์ ‘๊ทผ ๋ถˆ๊ฐ€

 

โœด๏ธŽ SQL ์ฒ˜๋ฆฌ ํ๋ฆ„๋„์—์„œ๋Š” ์„ฑ๋Šฅ์  ์ธก๋ฉด๋„ ํ‘œํ˜„

 

โœด๏ธŽ Unbounded Preceding, Current Row

: ์‹œ์ž‘๋ถ€ํ„ฐ ํ˜„์žฌ ํ–‰ ๊นŒ์ง€๋ฅผ ์˜๋ฏธ