๊ตญ๋ฏผ๋ํ๊ต์์ "์ค๋ผํด๋ก ๋ฐฐ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ก ๊ณผ ์ค์ต(2ํ)" ์ ์ด์ฉํ
์ ์ธ์ ๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์
๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค
1. ๋ด์ฅํจ์
SQL ๋ด์ฅ ํจ์
SQL์์๋ ํจ์์ ๊ฐ๋ ์ ์ฌ์ฉํ๋๋ฐ ์ํ์ ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํน์ ๊ฐ์ด๋ ์ด์ ๊ฐ์ ์ ๋ ฅ ๋ฐ์ ๊ทธ ๊ฐ์ ๊ณ์ฐํ์ฌ ๊ฒฐ๊ณผ ๊ฐ์ ๋๋ ค์ค๋ค
=> SQL์ ํจ์๋ DBMS๊ฐ ์ ๊ณตํ๋ ๋ด์ฅ ํจ์(bulit-in function)์ ์ฌ์ฉ์๊ฐ ํ์์ ๋ฐ๋ผ ์ง์ ๋ง๋๋ ์ฌ์ฉ์ ์ ์ ํจ์ (user-defined function)๋ก ๋๋จ
SQL ๋ด์ฅ ํจ์๋ ์์๋ ์์ฑ ์ด๋ฆ์ ์ ๋ ฅ ๊ฐ์ผ๋ก ๋ฐ์ ๋จ์ผ ๊ฐ์ ๊ฒฐ๊ณผ๋ก ๋ฐํํ๋ค
=> ๋ชจ๋ ๋ด์ฅ ํจ์๋ ์ต์ด์ ์ ์ธ๋ ๋ ์ ํจํ ์ ๋ ฅ ๊ฐ์ ๋ฐ์์ผ ํจ
์ซ์ ํจ์
๋ฌธ์ ํจ์
๋ ์ง · ์๊ฐ ํจ์
NULL ๊ฐ ์ฒ๋ฆฌ
NULL ๊ฐ์ด๋?
์์ง ์ง์ ๋์ง ์์ ๊ฐ(unknown or not exist)
=> NULL ๊ฐ์ '0', ""(๋น ๋ฌธ์), ' '(๊ณต๋ฐฑ) ๋ฑ๊ณผ ๋ค๋ฅธ ํน๋ณํ ๊ฐ์ด๋ค!
NULL๊ฐ์ ๋น๊ต ์ฐ์ฐ์๋ก ๋น๊ต๊ฐ ๋ถ๊ฐ๋ฅํ๋ฉฐ NULL ๊ฐ์ ์ฐ์ ์ฐ์ฐ์ ์ํํ๋ฉด ๊ฒฐ๊ณผ ์ญ์ NULL ๊ฐ์ผ๋ก ๋ฐํ๋๋ค
์ง๊ณ ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์
'NULL + ์ซ์' ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ NULL
=> ์ง๊ณ ํจ์ ๊ณ์ฐ ์ NULL์ด ํฌํจ๋ ํ์ ์ง๊ณ์์ ๋น ์ง!
ํด๋น๋๋ ํ์ดํ๋๋ ์์ ๊ฒฝ์ฐ SUM, AVG ํจ์์ ๊ฒฐ๊ณผ๋ NULL์ด ๋๋ฉฐ, COUNT ํจ์์ ๊ฒฐ๊ณผ๋ 0
NULL ๊ฐ์ ํ์ธํ๋ ๋ฐฉ๋ฒ - IS NULL, IS NOT NULL
NULL ๊ฐ์ ์ฐพ์ ๋๋ '=' ์ฐ์ฐ์๊ฐ ์๋ 'IS NULL'์ ์ฌ์ฉํ๋ค!
๋ฐ๋๋ก NULL์ด ์๋ ๊ฐ์ ์ฐพ์ ๋๋ 'IS NOT NULL' ์ ์ฌ์ฉ
NVL : NULL ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋์นํ์ฌ ์ฐ์ฐํ๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ถ๋ ฅํ๋ค
NVL(์์ฑ, ๊ฐ) : ์์ฑ ๊ฐ์ด NULL ์ด๋ฉด '๊ฐ' ๋ถ๋ถ์ผ๋ก ๋์นํ๋ค!
ROWNUM
๋ด์ฅ ํจ์๋ ์๋์ง๋ง ์์ฃผ ์ฌ์ฉ๋๋ ๋ฌธ๋ฒ์ด๋ค!
์ค๋ผํด์์ ๋ด๋ถ์ ์ผ๋ก ์์ฑ๋๋ ๊ฐ์ ์ปฌ๋ผ์ผ๋ก SQL ์กฐํ ๊ฒฐ๊ณผ์ ์๋ฒ์ ๋ํ๋ธ๋ค
=> ์๋ฃ๋ฅผ ์ผ๋ถ๋ถ๋ง ํ์ธํ์ฌ ์ฒ๋ฆฌํ ๋ ์ ์ฉํจ
2. ๋ถ์์ง์
๋ถ์์ง์(subquery)๋?
ํ๋์ SQL๋ฌธ ์์ ๋ค๋ฅธ SQL๋ฌธ์ด ์ค์ฒฉ๋(nested) ์ง์๋ฅผ ๋งํ๋ค
=> ๋ค๋ฅธ ํ ์ด๋ธ์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ก ํ์ฌ ํ ์ด๋ธ์ ์๋ ์ ๋ณด๋ฅผ ์ฐพ๊ฑฐ๋ ๊ฐ๊ณตํ ๋ ์ฌ์ฉํ๋ค
๋ณดํต ๋ฐ์ดํฐ๊ฐ ๋๋์ผ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํฉ์ณ์ ์ฐ์ฐํ๋ ์กฐ์ธ๋ณด๋ค ํ์ํ ๋ฐ์ดํฐ๋ง ์ฐพ์์ ๊ณต๊ธํด์ฃผ๋ ๋ถ์์ง์๊ฐ ์ฑ๋ฅ์ด ๋ ์ข์!
์ค์ฒฉ ์ง์ - WHERE ๋ถ์์ง์
๋น๊ต ์ฐ์ฐ์
๋ถ์กฑ์ง์๊ฐ ๋ฐ๋์ ๋จ์ผ ํ, ๋จ์ผ ์ด์ ๋ฐํํด์ผ ํ๋ฉฐ, ์๋ ๊ฒฝ์ฐ ์ง์๋ฅผ ์ฒ๋ฆฌํ ์ ์์
IN, NOT IN
IN : ์ฃผ์ง์ ์์ฑ ๊ฐ์ด ๋ถ์์ง์์์ ์ ๊ณตํ ๊ฒฐ๊ณผ ์งํฉ์ ์๋์ง ํ์ธํ๋ ์ญํ ์ ํจ
=> ๋ถ์์ง์ ๊ฒฐ๊ณผ ๋ค์ค ํ์ ๊ฐ์ง ์ ์๊ณ ์ฃผ์ง์๋ WHERE ์ ์ ์ฌ์ฉ๋๋ ์์ฑ ๊ฐ์ ๋ถ์์ง์์ ๊ฒฐ๊ณผ ์งํฉ๊ณผ ๋น๊ตํด ํ๋๋ผ๋ ์์ผ๋ฉด ์ฐธ์ด๋๋ค
NOT IN : IN๊ณผ ๋ฐ๋๋ก ๊ฐ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์ฐธ์ด ๋จ
ALL, SOME(ANY)
ALL์ ๋ชจ๋, SOME(ANY)์ ์ด๋ ํ(์ต์ํ ํ๋๋ผ๋)์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง
EXISTS, NOT EXISTS
๋ฐ์ดํฐ์ ์กด์ฌ ์ ๋ฌด๋ฅผ ํ์ธํ๋ ์ฐ์ฐ์์ด๋ค
์ฃผ์ง์์์ ๋ถ์์ง์๋ก ์ ๊ณต๋ ์์ฑ์ ๊ฐ์ ๊ฐ์ง๊ณ ๋ถ์์ง์์ ์กฐ๊ฑด์ ๋ง์กฑํ์ฌ ๊ฐ์ด ์กด์ฌํ๋ฉด ์ฐธ์ด๋๊ณ , ์ฃผ์ง์๋ ํด๋น ํ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ค
NOT EXISTS์ ๊ฒฝ์ฐ ์ด์ ๋ฐ๋๋ก ๋์ํจ
๊ตฌ๋ฌธ ๊ตฌ์กฐ : WHERE [NOT] EXISTS (๋ถ์์ง์)
์ค์นผ๋ผ ๋ถ์์ง์ - SELECT ๋ถ์์ง์
์ค์นผ๋ผ ๋ถ์์ง์(scalar subquery)๋?
SELECT์ ์์ ์ฌ์ฉ๋๋ ๋ถ์์ง์๋ก, ๋ถ์์ง์์ ๊ฒฐ๊ณผ ๊ฐ์ ๋จ์ผ ํ, ๋จ์ผ ์ด์ ์ค์นผ๋ผ ๊ฐ์ผ๋ก ๋ฐํํ๋ค
์ค์นผ๋ผ ๋ถ์์ง์๋ ์์น์ ์ผ๋ก ์ค์นผ๋ผ ๊ฐ์ด ๋ค์ด๊ฐ ์ ์๋ ๋ชจ๋ ๊ณณ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก SELECT๋ฌธ๊ณผ UPDATE SET ์ ์ ์ฌ์ฉ๋๋ค
=> ์ฃผ์ง์์ ๋ถ์์ง์์์ ๊ด๊ณ๋ ์๊ด/๋น์๊ด ๋ชจ๋๊ฐ๋ฅํจ
์๋ฅผ๋ค์ด ๋ง๋น์์ ์ ๊ณ ๊ฐ๋ณ ํ๋งค์ก์ ๋ณด์ด๋ SQL๋ฌธ์ ์ดํด๋ณด๋ฉด
์ด๋ ๊ฒ ๋๋ค!
UPDATE SET ์์ ๋ฅผ ์ดํด๋ณด๋ฉด
์ธ๋ผ์ธ ๋ทฐ - FROM ๋ถ์์ง์
์ธ๋ผ์ธ ๋ทฐ(inline view)๋?
FROM์ ์์ ์ฌ์ฉ๋๋ ๋ถ์์ง์๋ก ํ ์ด๋ธ ์ด๋ฆ ๋์ ์ธ๋ผ์ธ ๋ทฐ ๋ถ์์ง์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณดํต์ ํ ์ด๋ธ๊ณผ ๊ฐ์ ํํ๋ก ์ฌ์ฉํ ์ ์๋ค
=> ๋ถ์์ง์ ๊ฒฐ๊ณผ ๋ฐํ๋๋ ๋ฐ์ดํฐ๋ ๋ค์ค ํ, ๋ค์ค ์ด์ด์ด๋ ์๊ด ์์
(๋ค๋ง ๊ฐ์์ ํ ์ด๋ธ์ธ ๋ทฐ ํํ๋ก ์ ๊ณต๋์ด ์๊ด ๋ถ์์ง์๋ก ์ฌ์ฉ๋ ์๋ ์์)
3. ๋ทฐ
๋ทฐ(view)๋ ํ๋ ์ด์์ ํ ์ด๋ธ์ ํฉํ์ฌ ๋ง๋ ๊ฐ์์ ํ ์ด๋ธ
์ฅ์
- ํธ๋ฆฌ์ฑ( ๋ฐ ์ฌ์ฌ์ฉ์ฑ) : ์์ฃผ ์ฌ์ฉ๋๋ ๋ณต์กํ ์ง์๋ฅผ ๋ทฐ๋ก ๋ฏธ๋ฆฌ ์ ์ํด ๋์ ์ ์์
=> ๋ณต์กํ ์ง์๋ฅผ ๊ฐ๋จํ ์์ฑ, ๋ฏธ๋ฆฌ ์ ์๋ ๋ทฐ๋ฅผ ์ผ๋ฐ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ์ฌ ํธ๋ฆฌํจ - ๋ณด์์ฑ : ๊ฐ ์ฌ์ฉ์๋ณ๋ก ํ์ํ ๋ฐ์ดํฐ๋ง ์ ๋ณํ์ฌ ๋ณด์ฌ์ค ์ ์์ (์ค์ํ ์ง์์ ๊ฒฝ์ฐ ์ง์ ๋ด์ฉ์ ์ํธํ ๊ฐ๋ฅ)
=> ๊ฐ์ธ์ ๋ณด(์ฃผ๋ฏผ๋ฒํธ)๋ ๊ธ์ฌ, ๊ฑด๊ฐ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ธํ ํ ์ด๋ธ์ ๋ง๋ค์ด ์ฌ์ฉ - ๋
ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋
๋ฆฝ์ฑ ์ ๊ณต
=> ๊ฐ๋ ์คํค๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๊ฐ ๋ณํ์ฌ๋ ์ธ๋ถ ์คํค๋ง์ ์ํฅ์ ์ฃผ์ง ์๋๋กํ๋ ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ ๋ฆฝ์ฑ ์ ๊ณต
๋ทฐ์ ํน์ง
1. ์๋ณธ ๋ฐ์ดํฐ ๊ฐ์ ๋ฐ๋ผ ๊ฐ์ด ๋ณํจ
2. ๋ ๋ฆฝ์ ์ธ ์ธ๋ฑ์ค ์์ฑ์ด ์ด๋ ค์
3. ์ฝ์ , ์ญ์ , ๊ฐฑ์ ์ฐ์ฐ์ ๋ง์ ์ ์ฝ์ด ๋ฐ
๋ทฐ์ ์์ฑ
๊ธฐ๋ณธ ๋ฌธ๋ฒ์
CREATE VIEW ๋ทฐ์ด๋ฆ [(์ด์ด๋ฆ [,...ใ
])]
AS SELECT ๋ฌธ
(๋ทฐ์ SELECT ๋ฌธ์ Data Dictionary์ ์ ์ฅ๋๋ฉฐ, ๋ทฐ์ ์กฐํ ์ ์ฝ์ด์์ ์คํ๋จ)
๋ทฐ์ ์์
๊ธฐ๋ณธ ๋ฌธ๋ฒ์
CREATE OR REPLACE VIEW ๋ทฐ์ด๋ฆ [(์ด์ด๋ฆ [,...n])]
AS SELECT ๋ฌธ
์ด๋ค!
๋ทฐ์ ์ญ์
๊ธฐ๋ณธ๋ฌธ๋ฒ์
DROP VIEW ๋ทฐ์ด๋ฆ [,...n];
์ด๋ค!
4. ์ธ๋ฑ์ค
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ์ ์ฅ
๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ : ํ๋๋์คํฌ, SSD, USB ๋ฉ๋ชจ๋ฆฌ ๋ฑ
ํ๋๋์คํฌ : ์ํ์ ํ๋ ์ดํธ(plate)๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ์ด ํ๋ ์ดํธ๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ํธ๋์ผ๋ก ๋๋๋ฉฐ ํธ๋์ ๋ค์ ๋ช ๊ฐ์ ์นํฐ๋ก ๋๋จ
=> ์ํ์ ํ๋ ์ดํธ๋ ์ด๋น ๋น ๋ฅธ ์๋๋ก ํ์ ํ๊ณ , ํ์ ํ๋ ํ๋ ์ดํธ๋ฅผ ํ๋๋์คํฌ์ ์ก์ธ์ค ์๊ณผ ํค๋๊ฐ ์ ๊ทผํ์ฌ ์ํ๋ ์นํฐ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ด
- ํ๋๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ค๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ชจํฐ์ ์ํด์ ๋ถ๋น ํ์ ํ๋ ์๋(RPM)
- ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์์ธ์ค ์์ด ์ด๋ํ๋ ์๊ฐ(latency time)
- ์ฃผ๊ธฐ์ต์ฅ์น๋ก ์ฝ์ด์ค๋ ์๊ฐ(transfer time)์ ์ํฅ์ ๋ฐ์
์ธ๋ฑ์ค์ ํ์์ฑ (in memory)
* ์ค๋ผํด ์ ์ฅ์์ญ
Tablespace > Segment > Extents > Block
์ง์ ๊ฒ์ ์ data block(์ฌ๋ฌ ๊ฐ์ record๋ฅผ ์ ์ฅํ๋ ์ ์ฅ๋จ์, 2KB, 4KB, ...)์ ์ฝ๋ ํ์์ ์ต์ํ๊ฐ ํ์ํจ
Disk์ ์๋ ๋ฐ์ดํฐ๋ memory์ ์๋ ๋ฐ์ดํฐ์ ๋นํ์ฌ ์ฝ์ด๋ค์ด๋ ์๋๊ฐ 10000๋ฐฐ ์ ๋ ์์๋จ
์ธ๋ฑ์ค์ B-tree
์ธ๋ฑ์ค(index, ์์ธ)
๋์์ ์์ธ์ด๋ ์ฌ์ ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋๋ก ๋ง๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค
์ธ๋ฑ์ค์ ํน์ง
- ์ธ๋ฑ์ค๋ ํ
์ด๋ธ์์ ํ ๊ฐ ์ด์์ ์์ฑ์ ์ด์ฉํ์ฌ ์์ฑํจ
- ๋น ๋ฅธ ๊ฒ์๊ณผ ํจ๊ป ํจ์จ์ ์ธ ๋ ์ฝ๋ ์ ๊ทผ์ด ๊ฐ๋ฅํจ
- ์์๋๋ก ์ ๋ ฌ๋ ์์ฑ๊ณผ ๋ฐ์ดํฐ์ ์์น๋ง ๋ณด์ ํ๋ฏ๋ก ํ
์ด๋ธ๋ณด๋ค ์์ ๊ณต๊ฐ์ ์ฐจ์งํจ
- ์ ์ฅ๋ ๊ฐ๋ค์ ํ
์ด๋ธ์ ๋ถ๋ถ์งํฉ์ด ๋จ
- ์ผ๋ฐ์ ์ผ๋ก B-tree ํํ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง
- ๋ฐ์ดํฐ์ ์์ , ์ญ์ ๋ฑ์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ์ธ๋ฑ์ค์ ์ฌ๊ตฌ์ฑ์ด ํ์ํจ
์ค๋ผํด ์ธ๋ฑ์ค
์ค๋ผํด ์ธ๋ฑ์ค์ ์ข ๋ฅ
์ธ๋ฑ์ค์ ์์ฑ
์ธ๋ฑ์ค ์์ฑ ์ ๊ณ ๋ ค์ฌํญ
- ์ธ๋ฑ์ค๋ WHERE ์ ์ ์์ฃผ ์ฌ์ฉ๋๋ ์์ฑ์ด์ด์ผ ํจ
- ์ธ๋ฑ์ค๋ ์กฐ์ธ์ ์์ฃผ ์ฌ์ฉ๋๋ ์์ฑ์ด์ด์ผ ํจ
- ๋จ์ผ ํ
์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ๋ง์ผ๋ฉด ์๋๊ฐ ๋๋ ค์ง ์ ์์(ํ
์ด๋ธ ๋น 4~5๊ฐ ์ ๋ ๊ถ์ฅ)
- ์์ฑ์ด ๊ฐ๊ณต๋๋ ๊ฒฝ์ฐ ์ฌ์ฉํ์ง ์์
- ์์ฑ์ ์ ํ๋๊ฐ ๋ฎ์ ๋ ์ ๋ฆฌํจ(์์ฑ์ ๋ชจ๋ ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ)
- ์ ํ๋ (selectivity) = 1 / (์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์)
์ธ๋ฑ์ค์ ์ฌ๊ตฌ์ฑ๊ณผ ์ญ์
์ธ๋ฑ์ค์ ์ฌ๊ตฌ์ฑ์ ALTER INDEX ๋ช ๋ น์ ์ฌ์ฉํจ
๋จํธํ(fragmentation) ์ ๊ฑฐ๋ฅผ ์ํด ์ฌ์ฉ => REBUILD
'๐ซง Database > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Chapter 06. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (0) | 2024.05.15 |
---|---|
Chapter 05. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋๋ฐ (1) | 2024.04.16 |
Chapter 03. SQL ๊ธฐ์ด (1) | 2024.04.14 |
Chapter 02. ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ (1) | 2024.04.12 |
Chapter 01. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ (2) | 2024.04.10 |