NVL ํจ์
- NULL๊ฐ์ ํฌํจํ๋ ์ปฌ๋ผ์ ์ง์ ๋ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๋๋ฐ ์ฌ์ฉ.
- ์ผ์์ ์ผ๋ก NULL์ธ ์ปฌ๋ผ์ ๊ฐ์ ๋์ฒดํ๊ธฐ์ํ๊ฒ
- NVLํจ์๋ ๋ชจ๋ ๋ฐ์ดํฐํ์ ์ ์ ์ฉ ๊ฐ๋ฅ.
- NVLํจ์๋ ์ฌ์ฉํ ๋ ๋ณ๊ฒฝ๋๋ ๊ฐ์ ๋ฐ์ดํฐํ์ ๊ณผ ์ผ์นํด์ผํจ.
NVL ( A, B ) | |
A: NULL๊ฐ์ ํฌํจํ๊ณ ์๋ ์ปฌ๋ผ/์ | B: ๋ณ๊ฒฝํ๋ ค๋ ๊ฐ (๋์ฒดํ ๊ฐ) |
NVLํจ์์ ๋ฌธํ | ์ ํ ์์ |
NUMBER | NVL( commission_pct , 0 ) |
DATE | NVL( start_date, ‘17/01/01’ ) |
CHAR, VARVHAR2 |
NVL( mailid , ‘์์’ ) |
- ๋ฏธ๊ตญํ์ค์ธ COALESCE ํจ์๋ ๊ฐ์ ๊ธฐ๋ฅ.
DECODE ํจ์
- ์ค๋ผํด ์๊ทธ๋์ณ ํจ์.
- ๊ฐ์ ๋น๊ตํ์ฌ ํด๋นํ๋ ๊ฐ์ ๋๋ ค์ฃผ๋ ํจ์.
DECODE ( ํ์, ๋น๊ต๊ฐ1, ๊ฒฐ๊ณผ๊ฐ1, ๋น๊ต๊ฐ2, ๊ฒฐ๊ณผ๊ฐ2, ... ๊ธฐ๋ณธ๊ฐ) | |||
ํ์ | ๋น๊ต๊ฐ1 | ๊ฒฐ๊ณผ๊ฐ1 | ๊ธฐ๋ณธ๊ฐ |
์ปฌ๋ผ์ด๋ ๊ฐ | ํ์์ด ๋น๊ต๊ฐ1์ ๋ง๋์ง ๋น๊ต |
ํ์=๋น๊ต๊ฐ1 ์ผ ๋ ๊ฐ๋ ๊ฐ |
ํ์์ด ๋น๊ต๊ฐ๋ค๊ณผ ๋ง์ง ์์ ๋ ๊ฐ๋ ๊ฐ. ์๋ต๋ ์ ์์. ์๋ต์ด๋ฉด NULL. |
- ์๋ฐ์ switch๋ฌธ ๊ฐ์ ๊ฒ.
CASE๋ฌธ
- DECODE ํจ์๋ก ๋์ฒดํ ์ ์์.
PIVOT ํจ์
- ๋ฐ์ดํฐ๋ฅผ ํผ๋ดํ ์ด๋ธ์ ํํ๋ก ๋ณด์ฌ์ค.
- PIVOTํจ์๊ฐ ์ง์๋์ง ์๋ ๊ฒฝ์ฐ, DECODEํจ์๋ก ์ฒ๋ฆฌํ ์ ์์
ROLLUP ํจ์
- ๊ทธ๋ฃน๋ณ ํฉ๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํจ์.
- GROUP BY์ ์์ ์ฌ์ฉํจ.
- GROUP BY์ ์์ ์ง์ ํ ์ปฌ๋ผ ์์๋๋ก ๊ฒฐ๊ณผ ์งํฉ์ ๊ทธ๋ฃนํํ์ฌ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ง๋ฆ.
CUBE ํจ์
- ๊ทธ๋ฃน๋ณ ํฉ๊ณ๋ฅผ ๋ณด์ฌ์ค. -GROUP BY์ ์์ ์ฌ์ฉ
- GROUP BY์ ์์ ์ง์ ํ ๋ชจ๋ ์นผ๋ผ์ ์กฐํฉ์ ๋ํด ์ง๊ณ๋ฅผ ์ํ.
- ๋ค์ฐจ์ ์ง๊ณ, ๋ค์ฐจ์ ๋ถ์์ ์ํด ์ฌ์ฉํจ. ROLLUPํจ์์ ์ ์ฌํ์ง๋ง ๋ณด๋ค ๋ ์์ธํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํจ.
- REPORTํ๋ก๊ทธ๋จ์ด๋ ์ฅํ ์์ฑ์ ์ฌ์ฉํจ.
RANK ํจ์
- ํ๋ณ ์์๋ฅผ ๊ณ์ฐํด์ ๋ณด์ฌ์ค
- ๊ทธ๋ฃน๋ณ ์์๋ฅผ ๊ณ์ฐํด์ ๋ณด์ฌ์ค ์ ์์
์๊ด ์ฟผ๋ฆฌ Correlated SubQuery
โก๏ธ โก๏ธ โก๏ธ โฌ๏ธ โฌ๏ธ โฌ๏ธ โฌ๏ธ โฌ๏ธ โฌ๏ธ โฌ๏ธ โฌ ๏ธ โฌ ๏ธ โฌ ๏ธ |
GET candidate row holding |
EXCUTE candidate row๊ฐ์ ์ฌ์ฉํด์ innerQuery๋ฅผ ์ํํจ |
|
USE innerQuery์ ๊ฐ์ด candidate row์ ๋ง์กฑํ๋ ๊ฐ์ ์ ํ |
- OuterQuery์ candidate row๊ฐ ๋ ์ด์ ๋จ์ง ์์ ๋๊น์ง ๋ฐ๋ณตํจ.
- ์๊ด ์ฟผ๋ฆฌ๋ ๋ฐ๊นฅ ์ฟผ๋ฆฌ์ ๊ฐ ํ์ ๋ํด ๋ฐ๋ณต์ ์ผ๋ก ์คํ๋๋ฉฐ, ์ผ์นํ๋ ํ์ด ์์ ๋๊น์ง ๋ฐ๋ณต๋จ.
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ์๋ธ์ฟผ๋ฆฌ๊ฐ ์๋ก ๊ด๋ จ ์๋ ๊ฒ.
์๊ด ์ฟผ๋ฆฌ์ ํน์ง
- ๋ฉ์ธ์ฟผ๋ฆฌ๊ฐ ๋จผ์ ์ํ๋จ
- ์ด ๊ฒฐ๊ณผ๋ฅผ ์๋ธ ์ฟผ๋ฆฌ๊ฐ ๊ฐ์ ธ๋ค ์
๋ฉํฐ ๋ก์ฐ ๋น๊ต ์ฐ์ฐ์(๋ค์ค ํ ๋น๊ต ์ฐ์ฐ์)
IN | List์ ์๋ ๊ฐ์์ ํ๋๋ผ๋ ์ผ์นํ๋ฉด ์ฐธ(true) |
NOT IN | List์๋ ๊ฐ๊ณผ ๊ฐ์ง ์์์ง ๋น๊ต. ์ผ์นํ๋ ๊ฐ์ด ํ๋๋ผ๋ ์์ผ๋ฉด ๊ฑฐ์ง(false) ๋ฐํ. |
ANY | ์๋ธ์ฟผ๋ฆฌ์์ Return๋๋ ๊ฐ ์ค ์ด๋ ํ๋๋ผ๋ ์์ผ๋ฉด true |
ALL | ์๋ธ์ฟผ๋ฆฌ์์ Return๋๋ ๋ชจ๋ ๊ฐ์ ๋น๊ต. ๋ชจ๋ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ์ฐธ(true) |
EXISTS | ์๋ธ์ฟผ๋ฆฌ์์ ๋ง์กฑ๋๋ ๊ฐ์ด ๋ฐ๊ฒฌ๋๋ฉด true๊ฐ ๋๋ฉฐ, InnerQuety์์์ ๊ฒ์ ์ข ๋ฃ. |
NOT EXISTS | ์๋ธ์ฟผ๋ฆฌ์์ ๋ง์กฑ๋๋ ๊ฐ์ด ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด true๊ฐ ๋๋ฉฐ, InnerQuety์์์ ๊ฒ์ ์ข ๋ฃ. |
์๊ด์ฟผ๋ฆฌ ์์
์ฐ์ฐ์๋ค์ ์ฐจ์ด์
IN | ANY | EXISTS |
์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ์์ ๊ฒฝ์ฐ ๋น ๋ฅด๊ฒ ์๋ํจ. |
๋น๊ต ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉ๋จ. |
์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ํฐ ๊ฒฝ์ฐ ๋น ๋ฅด๊ฒ ์๋ํจ |
์๋ธ์ฟผ๋ฆฌ์ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํ ํ์ ์ฐธ/๊ฑฐ์ง์ ๋ฐํํจ. |
๋ง์กฑํ๋ ๊ฐ์ ํ๋๋ผ๋ ์ฐพ์ผ๋ฉฐ ์คํ์ ์ค์งํ๊ณ ์ฐธ์ ๋ฐํํจ. (๊ฒ์์ ์ข ๋ฃํจ) |
NOT IN | NOT EXISTS |
์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ์ค ํ๋๋ผ๋ NULL์ด๋ฉด ์ธ๋ถ ์ฟผ๋ฆฌ์ ๋ชจ๋ ํ์ ๋ํด ๊ฑฐ์ง์ ๋ฐํํด์ ์ ๋๋ก ๊ฒ์ํ์ง ์์. | ์๋ธ์ฟผ๋ฆฌ๊ฐ ํ๋์ ํ๋ ๋ฐํํ์ง ์์ผ๋ฉด ์ฐธ์ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ NOT EXISTS๋ ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ NULL ๊ฐ์ด ์์ด๋ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํจ. |
NOT IN ๊ฐ ์ธ๋ถ ์ฟผ๋ฆฌ์ ๊ฐ ํ๋ง๋ค ์คํ๋๋ฉฐ, ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ์ค ํ๋๋ผ๋ NULL์ด๋ฉด ํด๋น ํ์ ๋ํด ๊ฑฐ์ง์ ๋ฐํํ๋ค๋ ์๋ฏธ |
๋ค์ค ํ ๋น๊ต ์ฐ์ฐ์ – ANY
- ๋ณธ์ธ์ ๊ธ์ฌ๊ฐ ๊ฐ ๋ถ์๋ณ ํ๊ท ๊ธ์ฌ ์ค ์ด๋ ํ ๋ถ์์ ํ๊ท ๊ธ์ฌ๋ณด๋ค ์ ์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ง์์ ๋ํด ์ด๋ฆ, ๊ธ์ฌ ๋ถ์๋ฒํธ๋ฅผ ์ถ๋ ฅํ์์ค.
๋ค์ค ํ ๋น๊ต ์ฐ์ฐ์ – EXISTS
- ๋ณธ์ธdl ๋ค๋ฅธ ์ฌ๋์ ๊ด๋ฆฌ์๋ก ๋์ด์๋ ์ง์์ ์ฌ๋ฒ, ์ด๋ฆ, ์ง์ฑ ๋ถ์๋ฒํธ๋ฅผ ๋ํ๋ด์์ค.
๋ค์ค ํ ๋น๊ต ์ฐ์ฐ์ – NOT EXISTS
- ์๋ธ์ฟผ๋ฆฌ์์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฒฌํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ SEARCH์ข ๋ฃ.
- NOT IN์ฐ์ฐ์์ ๊ฑฐ์์ ์ฌํ๊ฒ ์ฌ์ฉํจ.
- NOT EXISTS ์ฐ์ฐ์๋ ํนํ ์๋ธ์ฟผ๋ฆฌ์์ NULL๊ฐ์ด RETURN ๋ ๋ ์ ์ฉํจ.
- NOT IN์ธ ๊ฒฝ์ฐ์๋ NULL๊ฐ์ด RETURN๋ ๋๊น์ง FALSE๊ฐ ๋จ.
Pseudo column(๊ฐ์์ปฌ๋ผ) - RowId, RowNum
RowId | -ํ
์ด๋ธ์ ์๋ ๊ฐ ํ์ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์(์ ์ฅ์์น)๋ฅผ ๊ณ ์ ํ๊ฒ ์ง์ ํจ. -RowId๋ฅผ ์๋ฉด ํด๋น ๋ฐ์ดํฐ ํ ๊ฑด์ ์์ธ์ค ํ ์ ์๋ค๋ ์๋ฏธ. -๊ฐ ํ์ด ์กด์ฌํ๋ ๋์์ ๋ถ๋ณ๊ฐ. |
RowNum | -์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ก ๋ฐํ๋๋ ๊ฐ ํ๋ค์ ๋ํด ํ
์ด๋ธ์์ ์ ํ๋ ์์๋ก RowNum์ด ์ง์ ๋จ. -์ฟผ๋ฆฌ์ ์ํด์ Return๋๋ ํ์ ์๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๊ฐ๋ฅํจ. |
๊ฐ์์ปฌ๋ผ - RowId
-RowId๋ ํ ํ์ ๊ณ ์ ํ ๋ฌผ๋ฆฌ์ ์ฃผ์(์ ์ฅ์์น)
RowId 80bit(18์๋ฆฌ) = 10byte |
|||
์ค๋ธ์ ํธ ๋ฒํธ |
์๋ ํ์ผ ๋ฒํธ |
๋ธ๋ก ๋ฒํธ | ๋ฐ์ดํฐ ๋ฒํธ |
32bit(16์๋ฆฌ) | 10bit(3์๋ฆฌ) | 22bit(6์๋ฆฌ) | 16bit(3์๋ฆฌ) |
ํด๋น ๋ฐ์ดํฐ๊ฐ ์ํ๋ ์ค๋ธ์ ํธ ๋ฒํธ |
๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ฐ์ดํฐํ์ผ์ ๋ฒํธ |
๋ฐ์ดํฐํ์ผ ์์ ์ด๋ ๋ธ๋ก์ธ์ง ์๋ฏธ |
๋ธ๋ก์์ ๋ฐ์ดํฐ์ ์์น |
AAAStG | AAB | AAAbmR | AAA |
์ค๋ธ์ ํธ๋ฒํธ. ์ด ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ์ RowId๋ AAAStG๋ก ์์. |
์๋ํ์ผ๋ฒํธ. ๊ฐ์ ํ ์ด๋ธ์ด๋ผ๋ ํ๋ง๋ค ๋ค๋ฅผ ์ ์์. |
๋ธ๋ก๋ฒํธ. ์กฐํํ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ ๋ธ๋ก์ ์์ผ๋ฉด ์ฑ๋ฅ์ด ํฅ์๋จ. |
๋ฐ์ดํฐ ๋ฒํธ. ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์๋ฅผ ์๋ฏธํจ. |
INDEX์ ํจ์จ์ ์ธ ์ฌ์ฉ
ํจ์จ์ ์ธ ์ฌ์ฉ = | INDEX๊ฐ ์กด์ฌํ์ง๋ง ์ฌ์ฉ๋์ง์๋ ๊ฒฝ์ฐ๋ฅผ ํผํ๊ธฐ |
- INDEXED์นผ๋ผ(์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์นผ๋ผ)์ด ๋น๊ต๋๊ธฐ ์ ์ ๋ณํ์ด ์ผ์ด๋ ๊ฒฝ์ฐ ์ธ๋ฑ์ค ์ฌ์ฉ์๋จ
- ์กฐ๊ฑด์ด ๋ถ์ ์ผ๋ก ๊ธฐ์ ๋ ๊ฒฝ์ฐ(NOT, <>) ์ธ๋ฑ์ค ์ฌ์ฉ์๋จ
- ์ผ๋ฐ์ ์ผ๋ก WHERE ์ ์์ ๋ถ์ ์ฐ์ฐ์(์: NOT, <>)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํด๋น ์นผ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์ ์ฒด ํ ์ด๋ธ์ ์ค์บํ๊ฒ๋จ.
- ์กฐ๊ฑด๋ฌธ์์ ๋ฐ๊นฅํ ์ด๋ธ(e1)์ ์ฌ์ฉํ๋ ์ด์ : ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ฐ๊นฅ ์ฟผ๋ฆฌ๋ถ์ ๊ฐ ํ์ ๋ํด ์คํ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ
- INDEXED์นผ๋ผ์ด NULL๋ก ๋น๊ตํ ๊ฒฝ์ฐ (์ปฌ๋ผ ๊ฐ์ด NULL์ธ ํ์ INDEX์ ์ ์ฅ์๋จ)
- Optimizer์ ์ทจ์ฌ์ ํ
- Optimizer๋ ํด๋น ์ฟผ๋ฆฌ์ ๊ฐ์ฅ ์ต์ ์ธ ์คํ ๊ณํ์ ์ ํํ๊ธฐ ์ํด ์ฟผ๋ฆฌ์ ๋ณต์ก์ฑ, ์กฐ๊ฑด์ , ์ธ๋ฑ์ค ์ ํ๋ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์์๋ฅผ ๊ณ ๋ คํจ. ๋ฐ๋ผ์ ์ธ๋ฑ์ค๊ฐ ์กด์ฌํ๋๋ผ๋ ์ตํฐ๋ง์ด์ ๊ฐ ํด๋น ์ธ๋ฑ์ค๋ฅผ ์ ํํ์ง ์์ ์ ์์.
์๋ ์คํ ํ๋ก๊ทธ๋จ TRIGGER
- ์์์ ํ ์ด๋ธ์ ํน์ ํ DML๋ฌธ์ด ์ํ๋์ ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋์ ์ผ๋ก ๋์ํ๋๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ.
- ์ด๋ค ์์ ์ด ์คํ๋๋ฉด ์ฐ์์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ๋์ํ๋๋ก ํ ๊ฒ.
ํ์ด๋ฐ์ ๋ฐ๋ฅธ ๋ถ๋ฅ | -DML ์ด์ ์ ์ํ -DML ์ดํ์ ์ํ |
์ํ ์ฐจ์์ ๋ฐ๋ฅธ ๋ถ๋ฅ | -ํ ๋ฒ๋ง ์ํ -row๋ง๋ค ์ํ |
'๐ฅ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MyBatis] Mapper ์ค์ ๊ณผ ๋ฌธ๋ฒ, ์์ฃผํ๋ ์ค์ (0) | 2024.01.24 |
---|---|
[Oracle] OBJECT ์ค๋ธ์ ํธ (0) | 2024.01.06 |
[Oracle] DCL ๋ฐ์ดํฐ ์ ์ด์ด (0) | 2024.01.05 |
[Oracle] DDL ๋ฐ์ดํฐ ์ ์์ด (1) | 2024.01.05 |
[Oracle] DICTIONARY ๋ฐ์ดํฐ ์ฌ์ (0) | 2024.01.05 |