[SQLD] ๋ชจ์๊ณ ์ฌ ๋ฌธ์ ํ์ด & ๊ธฐ์ตํด์ผํ ๋ด์ฉ๋ค
โด๏ธ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๋ช ์ฑ ์ข ๋ฅ
• ๋ถํ ํฌ๋ช ์ฑ
• ์์น ํฌ๋ช ์ฑ
• ์ง์ญ ํฌ๋ช ์ฑ
• ์ค๋ณต ํฌ๋ช ์ฑ
• ๋ณํ ํฌ๋ช ์ฑ
• ์ฅ์ ํฌ๋ช ์ฑ
โด๏ธ 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
: ์์๋ถํฐ ํ์ฌ ํ ๊น์ง๋ฅผ ์๋ฏธ