๐ก SQLD ์๊ฒฉ์ฆ ์ํ ๋๋น ํ์ตํ ๋ด์ฉ์ ์์ฝ์ ๋ฆฌํฉ๋๋ค.
ํ์ค ์กฐ์ธ
SQL ๊ด๊ณํ ๋์ (8๊ฐ์ง)
- ์ผ๋ฐ ์งํฉ ์ฐ์ฐ์(4๊ฐ์ง)
- ์์ ๊ด๊ณ ์ฐ์ฐ์(4๊ฐ์ง)
์ผ๋ฐ ์งํฉ ์ฐ์ฐ์
๋ ๊ฐ ์ด์์ ํ
์ด๋ธ์์ ์กฐ์ธ์ ์ฌ์ฉํ์ง ์๊ณ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ์ง์์ ๊ฒฐ๊ณผ๋ฅผ ์ฐ๊ฒฐํ์ฌ ํ๋์ ๊ฒฐํฉํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ์ฆ, 2๊ฐ ์ด์์ ์ง์ ๊ฒฐ๊ณผ๋ฅผ ํ๋์ ๊ฒฐ๊ณผ๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด๋ค.
์ผ๋ฐ ์งํฉ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ์ํฉ
- ์๋ก ๋ค๋ฅธ ํ
์ด๋ธ์์ ์ ์ฌํ ํํ์ ๊ฒฐ๊ณผ๋ฅผ๋ฐํํ๋ ๊ฒ์ ํ๋์ ๊ฒฐ๊ณผ๋ก ํฉ์น๊ณ ์ ํ ๋
- ๋์ผ ํ
์ด๋ธ์์ ์๋ก ๋ค๋ฅธ ์ง์๋ฅผ ์ํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํฉ์น๊ณ ์ ํ ๋
์ผ๋ฐ ์งํฉ ์ฐ์ฐ์์ ์ ์ฝ ์กฐ๊ฑด
- SELECT ์ ์ ์นผ๋ผ์๊ฐ ๋์ผํด์ผ ํจ
- SELECT์ ์ ๋์ผ ์์น์ ์กด์ฌํ๋ ์ปฌ๋ผ์ ๋ฐ์ดํฐ ํ์
์ด ์ํธ ํธํ ๊ฐ๋ฅํด์ผ ํจ
์งํฉ ์ฐ์ฐ์์ ์ข
๋ฅ
- UNION : ํฉ์งํฉ(์ค๋ณต๋ ํ์ ํ๋๋ก)
- UNION ALL : ํฉ์งํฉ(์ค๋ณต๋ ํ ๋ชจ๋ ๊ฒฐ๊ณผ๋ก ํ์)
- INTERSECT : ๊ต์งํฉ(์ค๋ณต๋ ํ์ ํ๋๋ก)
- EXCEPT(MINUS) : ์ฐจ์งํฉ(์ค๋ณต๋ ํ์ ํ๋๋ก)
- CROSS JOIN : ๊ณฑ์งํฉ(PRODUCT), JOIN ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ์๊ธธ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ์กฐํฉ, m*n๊ฑด์ ๋ฐ์ดํฐ ์กฐํฉ ๋ฐ์
๐ก ์ถ๋ ฅ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค๋ฉด UNION๊ณผ UNION ALL ์ค UNION ALL ์ฌ์ฉ์ ๊ถ๊ณ ํ๋ค.
์์ ๊ด๊ณ ์ฐ์ฐ์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์๋กญ๊ฒ ๋ง๋ค์ด์ง ์ฐ์ฐ์
- SELECT ์ฐ์ฐ์ WHERE ์ ๋ก ๊ตฌํ
- PROJECT ์ฐ์ฐ์ SELECT์ ๋ก ๊ตฌํ
- JOIN ์ฐ์ฐ์ ๋ค์ํ JOIN ๊ธฐ๋ฅ์ผ๋ก ๊ตฌํ
- DIVIDE(๋๋์
)์ฐ์ฐ์ ํ์ฌ ์ฌ์ฉ x
๐ก SELECT ์ฐ์ฐ๊ณผ SELECT์ ์ ์๋ก ๋ค๋ฅธ ์๋ฏธ
FROM์ JOIN ํํ
- INNER JOIN
- NATURAL JOIN
- USING ์กฐ๊ฑด์
- ON ์กฐ๊ฑด์
- CROSS JOIN
- OUTER JOIN
INNER JOIN(๋ด๋ถ)
-
JOIN ์กฐ๊ฑด์์ ๋์ผํ ๊ฐ์ด ์๋ ํ๋ง ๋ฐํ.
-
WHERE ์ ์์ ์ฌ์ฉํ๋ JOIN ์กฐ๊ฑด์ FROM ์ ์์ ์ ์ํ๊ฒ ๋ค๋ ํ์๋ก USING ์กฐ๊ฑด์ ์ด๋ ON ์กฐ๊ฑด์ ์ ํ์๋ก ์ฌ์ฉ.
-
๊ธฐ๋ณธ์ต์
์ด๋ฏ๋ก ์๋ต์ด ๊ฐ๋ฅ
-
CROSS JOIN, OUTER JOIN๊ณผ ๊ฐ์ด ์ฌ์ฉ ๋ถ๊ฐ
-
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด;
-
SELECT ์ปฌ๋ผ๋ช
INNER JOIN ํ
์ด๋ธ๋ช
ON ์กฐ๊ฑด;
-
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
JOIN ํ
์ด๋ธ๋ช
ON ์กฐ๊ฑด;
NATURAL JOIN(INNER JOIN ํ์ ๊ฐ๋
)
๋ ํ
์ด๋ธ ๊ฐ์ ๋์ผํ ์ด๋ฆ์ ๊ฐ๋ ๋ชจ๋ ์ปฌ๋ผ๋ค์ ๋ํด EQUI(=) JOIN์ ์ํ
- USING ์กฐ๊ฑด์ , ON ์กฐ๊ฑด์ , WHERE์ ์์ JOIN ์กฐ๊ฑด์ ์ ์ํ ์ ์๋ค
- JOIND์ด ๋๋ ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ฑ๊ฒฉ(๋๋ฉ์ธ)๊ณผ ์ปฌ๋ผ๋ช
๋ฑ์ด ๋์ผ ํด์ผ ํ๋ค.
- SQL Server์์ ์ง์ X
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
NATURAL JOIN ํ
์ด๋ธ๋ช
;
USING ์กฐ๊ฑด์
FROM ์ ์ ํด๋น ์กฐ๊ฑด์ ์ ์ด์ฉํ๋ฉด ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ปฌ๋ผ๋ค ์ค์์ ์ํ๋ ์ปฌ๋ผ์ ๋ํด์๋ง ์ ํ์ ์ผ๋ก EQUI(=) JOINํ ์ ์๋ค.
- JOIN ์ปฌ๋ผ์ ๋ํด ๋ณ์นญ, ํ
์ด๋ธ ๋ช
๊ณผ ๊ฐ์ ์ ๋์ฌ ์ฌ์ฉ ๊ธ์ง.
- SQL Server์์ ์ง์ X
SELECT * FROM ํ
์ด๋ธ๋ช
JOIN ํ
์ด๋ธ๋ช
USING (์ปฌ๋ผ๋ช
);
ON ์กฐ๊ฑด์
- JOIN ์์ ๋ถ(ON ์กฐ๊ฑด์ )์ ๋น JOIN ์์ ๋ถ(WHERE ์กฐ๊ฑด์ )์ ๋ถ๋ฆฌํ์ฌ ์ดํด๊ฐ ์ฝ๋ค.
- ์ปฌ๋ผ๋ช
์ด ๋ค๋ฅด๋๋ผ๋ JOIN ์กฐ๊ฑด์ ์ฌ์ฉํ ์ ์๋ ์ฅ์ ์ด ์๋ค.
- ๋ณ์นญ์ด๋ ํ
์ด๋ธ ๋ช
๊ณผ ๊ฐ์ ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ์ฌ SELECT์ ์ฌ์ฉ๋๋ ์ปฌ๋ผ์ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ช
ํํ๊ฒ ์ง์ ํด์ผ ํ๋ค.
ON ์กฐ๊ฑด์ + ๋ฐ์ดํฐ ๊ฒ์ฆ ์กฐ๊ฑด ์ถ๊ฐ
ON ์กฐ๊ฑด์ ์ JOIN ์กฐ๊ฑด ์ธ์๋ ๋ฐ์ดํฐ ๊ฒ์ ์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์์ผ๋, ๊ฒ์ ์กฐ๊ฑด ๋ชฉ์ ์ธ ๊ฒฝ์ฐ WHERE ์ ์ ์ฌ์ฉํ ๊ฒ์ ๊ถ๊ณ .
CROSS JOIN
์ผ๋ฐ ์งํฉ ์ฐ์ฐ์์ PRODUCT์ ๊ฐ๋
, ํ
์ด๋ธ ๊ฐ JOIN ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ์๊ธธ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ์กฐํฉ.
- ์์ชฝ ์งํฉ์ M*N๊ฑด์ ๋ฐ์ดํฐ ์กฐํฉ ๋ฐ์.
OUTER JOIN(์ธ๋ถ ์กฐ์ธ)
JOIN ์กฐ๊ฑด์์ ๋์ผํ ๊ฐ์ด ์๋ ํ๋ ๋ฐํํ ๋ ์ฌ์ฉ.
- JOIN ์กฐ๊ฑด์ FROM ์ ์์ ์ ์-> USING, ON ์กฐ๊ฑด์ ํ์ ์ฌ์ฉ
LEFT OUTER JOIN(์ข -> ์ฐ)
์กฐ์ธ ์ํ ์ ๋จผ์ ํ๊ธฐ๋ ์ข์ธก ํ
์ด๋ธ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ฝ์ ํ, ๋์ค ํ๊ธฐ๋ ์ฐ์ธก ํ
์ด๋ธ์์ JOIN ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
- ์ฐ์ธก JOIN ์ปฌ๋ผ์์ ๊ฐ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ : ์ฐ์ธก ํ
์ด๋ธ์์ ๊ฐ์ ธ์ค๋ ์ปฌ๋ผ๋ค์ null ๊ฐ์ผ๋ก ์ฑ์
RIGHT (OUTER) JOIN(์ฐ -> ์ข)
์กฐ์ธ ์ํ ์ ๋จผ์ ํ๊ธฐ๋ ์ฐ์ธก ํ
์ด๋ธ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ฝ์ ํ, ๋์ค ํ๊ธฐ๋ ์ข์ธก ํ
์ด๋ธ์์ JOIN ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
- ์ข์ธก JOIN ์ปฌ๋ผ์์ ๊ฐ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ : ์ข์ธก ํ
์ด๋ธ์์ ๊ฐ์ ธ์ค๋ ์ปฌ๋ผ๋ค์ null ๊ฐ์ผ๋ก ์ฑ์
FULL (OUTER) JOIN
์ข, ์ฐ์ธก ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด JOINํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์์ฑ.
- LEFT, RIGHT OUTER JOIN ๊ฒฐ๊ณผ์ ํฉ์งํฉ
- ์ค๋ณต ๋ฐ์ดํฐ๋ ์ญ์
๊ณ์ธตํ ์ง์์ ์
ํ ์กฐ์ธ
๊ณ์ธตํ ๋ฐ์ดํฐ
๋์ผ ํ
์ด๋ธ์์ ๊ณ์ธต์ ์ผ๋ก ์์, ํ์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋ฐ์ดํฐ๋ก ์ํฐํฐ๋ฅผ ์ํ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ก ์ค๊ณํ ๊ฒฝ์ฐ ๋ฐ์.
์ค๋ผํด ๊ณ์ธตํ ์ง์ ๊ตฌ๋ฌธ
- START WITH ์ : ๊ณ์ธต ๊ตฌ์กฐ ์ ๊ฐ์ ์์ ์์น ์ง์ , ๋ฃจํธ ๋ฐ์ดํฐ ์ง์
- CONNECT BY ์ : ๋ค์ ์ ๊ฐ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ง์ , ์์ ๋ฐ์ดํฐ๋ ํด๋น ์ ์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค.
- PRIOR : ํ์ฌ ์ฝ์ ์ปฌ๋ผ ์ง์ .
PRIOR ์์ = ๋ถ๋ชจ : ์์->๋ถ๋ชจ, ์๋ฐฉํฅ
PRIOR ๋ถ๋ชจ = ์์ : ๋ถ๋ชจ -> ์์, ์ญ๋ฐฉํฅ
- NOCYCLE : ์ฌ์ดํด์ด ๋ฐ์ํ ์ดํ์ ๋ฐ์ดํฐ ์ ๊ฐ X
๐ก ์ฌ์ดํด(CYCLE) : ์ด๋ฏธ ๋ํ๋ฌ๋ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์ ๊ฐ ์ค์ ๋ค์ ๋ํ๋๋ ํ์. -> ๋ฐํ์์๋ฌ ๋ฐ์!
- ORDER SIBLINGS BY ์ : ํ์ ๋
ธ๋(๋์ผ ๋ ๋ฒจ) ์ฌ์ด์์ ์ ๋ ฌ ์ํ
- WHERE : ๋ชจ๋ ์ ๊ฐ๋ฅผ ์ํํ ํ, ์ง์ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ง ์ถ์ถ.
๊ณ์ธตํ ์ง์์ ๊ฐ์ ์ปฌ๋ผ
- LEVEL : ๋ฃจํธ ๋ฐ์ดํฐ - 1, ๊ทธ ํ์ ๋ฐ์ดํฐ - 2, ๋ฆฌํ ๋ฐ์ดํฐ๊น์ง 1์ฉ ์ฆ๊ฐํ๋ค.
- CONNECT_BY_ISLEAF : ์ ๊ฐ ๊ณผ์ ์์ ํด๋น ๋ฐ์ดํฐ๊ฐ ๋ฆฌํ ๋ฐ์ดํฐ๋ฉด 1, ๊ทธ๋ ์ง ์๋๋ฉด 0
- CONNECT_BY_ISCYCLE : ํด๋น ๋ฐ์ดํฐ๊ฐ ์กฐ์์ผ๋ก ์กด์ฌํ๋ฉด 1, ๊ทธ๋ ์ง ์์ผ๋ฉด 0 (CYCLE ์ต์
์ ์ฌ์ฉํ์ ๋๋ง ์ฌ์ฉ)
๊ณ์ธตํ ์ง์์์ ์ฌ์ฉ๋๋ ํจ์
์ฌ์ฉ์ ํธ์์ฑ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- SYS_CONNECT_BY_PATH : ๋ฃจํธ - ํ์ฌ ๋ฐ์ดํฐ๊น์ง์ ๊ฒฝ๋ก
- CONNECT_BY_ROOT : ํ์ฌ ์ ๊ฐํ ๋ฐ์ดํฐ์ ๋ฃจํธ ๋ฐ์ดํฐ๋ฅผ ํ์. ๋จํญ ์ฐ์ฐ์
์
ํ ์กฐ์ธ
- ๋์ผ ํ
์ด๋ธ ์ฌ์ด์ ์กฐ์ธ.
- FROM ์ ์ ๋์ผ ํ
์ด๋ธ์ด ๋ ๋ฒ ์ด์ ๋ํ๋จ
- ์๋ณ์ ์ํด ๋ฐ๋์ ํ
์ด๋ธ ๋ณ์นญ์ ์ฌ์ฉ
์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ
- ํ๋์ SQL๋ฌธ ์์ ํฌํจ๋์ด ์๋ ๋ ๋ค๋ฅธ SQL๋ฌธ
- ์๋ ค์ง์ง ์์ ๊ธฐ์ค์ ์ด์ฉํ ๊ฒ์์ ์ํด ์ฌ์ฉ
- ๋ฉ์ธ์ฟผ๋ฆฌ๊ฐ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ํฌํจํ๋ ์ข
์ ๊ด๊ณ
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ง๋ง ๋ฉ์ธ์ฟผ๋ฆฌ๋ ์๋ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ์ฌ์ฉํ ์ ์๋ค.
- ์๋ธ์ฟผ๋ฆฌ๋ ์๋ธ์ฟผ๋ฆฌ ๋ ๋ฒจ๊ณผ ์๊ด์์ด ํญ์ ๋ฉ์ธ์ฟผ๋ฆฌ ๋ ๋ฒจ๋ก ๊ฒฐ๊ณผ ์งํฉ์ด ์์ฑ
์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ์ ์ฃผ์์ฌํญ
- ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๊ดํธ๋ก ๊ฐ์ธ์ ์ฌ์ฉ
- ๋จ์ผ ํ ๋๋ ๋ณต์ ํ ๋น๊ต ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉ ๊ฐ๋ฅ
๋จ์ผ ํ ๋น๊ต ์ฐ์ฐ์ : ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ <= 1๊ฑด
๋ณต์ ํ ๋น๊ต ์ฐ์ฐ์ : ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๊ฑด์์ ๋ฌด๊ด
- ์๋ธ์ฟผ๋ฆฌ์์ ORDER BY ์ฌ์ฉ ๋ถ๊ฐ
๐ก ORDER BY์ ์ SELECT ์ ์์ ์ค์ง ํ ๊ฐ๋ง ์ฌ ์ ์์ -> ๋ฉ์ธ์ฟผ๋ฆฌ ๋ง์ง๋ง ๋ฌธ์ฅ์ ์์นํด์ผ ํจ
์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณณ
- SELECT ์
- FROM ์
- WHERE ์
- ORDER BY ์
- INSERT๋ฌธ์ VALUES ์
- UPDATE๋ฌธ์ SET์
์๋ธ์ฟผ๋ฆฌ์ ์ข
๋ฅ
- Un-correlated(๋น์ฐ๊ด) : ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ฉ์ธ์ฟผ๋ฆฌ ์นผ๋ผ์ ๊ฐ์ง๊ณ ์์ง ์์ ํํ
- Correlated(์ฐ๊ด) : ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ฉ์ธ์ฟผ๋ฆฌ ์ปฌ๋ผ์ ๊ฐ์ง๊ณ ์๋ ํํ
๋ฐํํ๋ ๋ฐ์ดํฐ ํํ์ ๋ฐ๋ฅธ ์๋ธ์ฟผ๋ฆฌ ๋ถ๋ฅ
- Single Row(๋จ์ผ ํ) ์๋ธ์ฟผ๋ฆฌ
- Multi Row(๋ค์ค ํ) ์๋ธ์ฟผ๋ฆฌ
- Multi Column(๋ค์ค ์ปฌ๋ผ) ์๋ธ์ฟผ๋ฆฌ
๋จ์ผ ํ ์๋ธ์ฟผ๋ฆฌ
- ์๋ธ์ฟผ๋ฆฌ์ ์คํ ๊ฒฐ๊ณผ๊ฐ ํญ์ 1๊ฑด ์ดํ์ธ ์๋ธ์ฟผ๋ฆฌ
- ๋จ์ผ ํ ๋น๊ต ์ฐ์ฐ์(=, <. <=, >, >=, <>)์ ํจ๊ป ์ฌ์ฉ
๋ค์ค ํ ์๋ธ์ฟผ๋ฆฌ
- ์๋ธ์ฟผ๋ฆฌ์ ์คํ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ ๊ฑด์ธ ์๋ธ์ฟผ๋ฆฌ
- ๋ค์ค ํ ๋น๊ต ์ฐ์ฐ์(IN, ALL, ANY, SOME)์ ํจ๊ป ์ฌ์ฉ
- IN (์๋ธ์ฟผ๋ฆฌ) : ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ์กด์ฌํ๋ ์์์ ๊ฐ๊ณผ ๋์ผํ ์กฐ๊ฑด
- ๋น๊ต ์ฐ์ฐ์ ALL (์๋ธ์ฟผ๋ฆฌ) : ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ์กด์ฌํ๋ ๋ชจ๋ ๊ฐ์ ๋ง์กฑํ๋ ์กฐ๊ฑด
- ๋น๊ต ์ฐ์ฐ์ ANY (์๋ธ์ฟผ๋ฆฌ) : ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ์กด์ฌํ๋ ์ด๋ ํ๋์ ๊ฐ์ด๋ผ๋ ๋ง์กฑํ๋ ์กฐ๊ฑด(SOME ๊ณผ ๋์ผ)
- EXISTS (์๋ธ์ฟผ๋ฆฌ) : ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง์กฑํ๋ ๊ฐ์ด ์กด์ฌ ์ฌ๋ถ ํ์ธํ๋ ์กฐ๊ฑด
๋ค์ค ์ปฌ๋ผ ์๋ธ์ฟผ๋ฆฌ
- ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฌ ๊ฐ์ ์ปฌ๋ผ์ด ๋ฐํ๋์ด ๋ฉ์ธ์ฟผ๋ฆฌ์ ์กฐ๊ฑด๊ณผ ๋์์ ๋น๊ต ๋๋ ๊ฒ์ ์๋ฏธ
- SQL Server์์ ์ง์ X
์ฐ๊ด ์๋ธ์ฟผ๋ฆฌ
- ์๋ธ์ฟผ๋ฆฌ ๋ด์ ๋ฉ์ธ์ฟผ๋ฆฌ ์ปฌ๋ผ์ด ์ฌ์ฉ๋ ์๋ธ์ฟผ๋ฆฌ
์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ
- SELECT ์ ์์ ์ฌ์ฉํ๋ ์๋ธ์ฟผ๋ฆฌ
- ํ ํ, ํ ์ปฌ๋ผ๋ง์ ๋ฐํ
- ๋จ์ผ ํ ์๋ธ์ฟผ๋ฆฌ, 2๊ฑด ์ด์ ๋ฐํ X
์ธ๋ผ์ธ ๋ทฐ(Inline View)
- FROM ์ ์์ ์ฌ์ฉ๋๋ ์๋ธ์ฟผ๋ฆฌ.
- ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ๋ง์น ์คํ ์ ๋์ ์ผ๋ก ์์ฑ๋ ํ
์ด๋ธ ์ธ ๊ฒ ์ฒ๋ผ ์ฌ์ฉ๋๋ค.
- SQL๋ฌธ์ด ์คํ๋ ๋๋ง ์์์ ์ผ๋ก ์์ฑ๋๋ ๋์ ์ธ ๋ทฐ -> DB์ ์ ์ฅ X
- ์ธ๋ผ์ธ ๋ทฐ๋ ํ
์ด๋ธ ๋ช
์ด ์ฌ ์ ์๋ ๊ณณ์์ ์ฌ์ฉ
- JOIN ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ผ๋ฉฐ ์ธ๋ผ์ธ ๋ทฐ์ ์ปฌ๋ผ์ SQL๋ฌธ์ ์์ ๋กญ๊ฒ ์ฐธ์กฐ ๊ฐ๋ฅ
๋ทฐ(View)
- ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ณ , ๋ทฐ ์ ์๋ง์ ๊ฐ์ง๊ณ ์๋ค.
- ๋ทฐ ์ ์๋ฅผ ์ฐธ์กฐํ์ฌ DBMS ๋ด๋ถ์ ์ผ๋ก ์ง์๋ฅผ ์ฌ์์ฑํ์ฌ ์ง์๋ฅผ ์ํ
- ํ
์ด๋ธ์ด ์ํํ๋ ์ญํ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํ
์ด๋ธ์ด๋ผ๊ณ ๋ ํ๋ค.
๋ทฐ ์ฌ์ฉ์ ์ฅ์
- ๋
๋ฆฝ์ฑ : ํ
์ด๋ธ ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋์ด๋ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝํ์ง ์์๋ ๋๋ค.
- ํธ๋ฆฌ์ฑ : ๋ณต์กํ ์ง์๋ฅผ ๋ทฐ๋ก ์์ฑํจ์ผ๋ก์จ ๊ด๋ จ ์ง์๋ฅผ ๋จ์ํ๊ฒ ์์ฑ. ํด๋น ํํ์ SQL๋ฌธ์ ์์ฃผ ์ฌ์ฉํ ๋ ๋ทฐ๋ฅผ ์ด์ฉํ๋ฉด ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ณด์์ฑ : ์จ๊ธฐ๊ณ ์ถ์ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ทฐ๋ฅผ ์์ฑํ ๋ ํด๋น ์ปฌ๋ผ์ ๋นผ๊ณ ์์ฑํ์ฌ ์ ๋ณด๋ฅผ ์จ๊ธธ ์ ์๋ค.