View๊ฐ ๋ฌด์์ด๊ณ , ์ธ์ ์ฌ์ฉํ ์ ์๋์?
โข ๊ทธ๋ ๋ค๋ฉด, View์ ๊ฐ์ ์์ ํด๋ ์ค์ ํ
์ด๋ธ์๋ ๋ฐ์๋์ง ์๋์?
๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ์ ๊ทผ์ด ํ์ฉ๋ ์๋ฃ๋ง์ ์ ํ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ํ๋ ์ด์์ ๊ธฐ๋ณธ ํ ์ด๋ธ๋ก๋ถํฐ ์ ๋๋, ์ด๋ฆ์ ๊ฐ์ง๋ ๊ฐ์ ํ ์ด๋ธ์ด๋ค.
๋ทฐ๋ ์ ์ฅ์ฅ์น ๋ด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ์ง ์์ง๋ง ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ฒ๋ผ ๊ฐ์ฃผ๋๋ค.
๋ทฐ๋ ๋ฐ์ดํฐ ๋ณด์ ์์ , ์ฒ๋ฆฌ๊ณผ์ ์ํ ๋ฑ ์์์ ์ธ ์์ ์ ์ํ ์ฉ๋๋ก ํ์ฉ๋๋ค.
๋ทฐ๋ ์กฐ์ธ๋ฌธ์ ์ฌ์ฉ ์ต์ํ๋ก ์ฌ์ฉ์์ ํธ์์ฑ์ ์ต๋ํ ํ๋ค.
๋ทฐ๋ ๊ธฐ๋ณธํ ์ด๋ธ๋ก๋ถํฐ ์ ๋๋ ํ ์ด๋ธ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ํ ์ด๋ธ๊ณผ ๊ฐ์ ํํ์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์กฐ์๋ ๊ธฐ๋ณธ ํ ์ด๋ธ๊ณผ ๊ฑฐ์ ๊ฐ๋ค.
๋ทฐ๋ ๊ฐ์ ํ ์ด๋ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ตฌํ๋์ด ์์ง ์๋ค.
๋ฐ์ดํฐ์ ๋ ผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ์ ์ ๊ณตํ ์ ์๋ค.
ํ์ํ ๋ฐ์ดํฐ๋ง ๋ทฐ๋ก ์ ์ํด์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๊ณ ๋ช ๋ น๋ฌธ์ด ๊ฐ๋จํด์ง๋ค.
๋ทฐ๋ฅผ ํตํด์๋ง ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ํ๋ฉด ๋ทฐ์ ๋ํ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๋ ํจ์จ์ ์ธ ๊ธฐ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๊ธฐ๋ณธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ํฌํจํ ์์ฑ(์ด) ์งํฉ์ผ๋ก ๋ทฐ๋ฅผ ๊ตฌ์ฑํด์ผ์ง๋ง ์ฝ์ , ์ญ์ , ๊ฐฑ์ , ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
์ผ๋จ ์ ์๋ ๋ทฐ๋ ๋ค๋ฅธ ๋ทฐ์ ์ ์์ ๊ธฐ์ด๊ฐ ๋ ์ ์๋ค.
๋ทฐ๊ฐ ์ ์๋ ๊ธฐ๋ณธํ ์ด๋ธ์ด ์ญ์ ๋๋ฉด ๋ทฐ๋ ์๋์ผ๋ก ์ญ์ ๋จ
๋ทฐ๋ ์๋ณธ ํ ์ด๋ธ๊ณผ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ค.
๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ ๋ฆฝ์ฑ์ ์ ๊ณตํ๋ค.
๋์ผ ๋ฐ์ดํฐ์ ๋ํด ๋์์ ์ฌ๋ฌ์ฌ์ฉ์์ ์์ดํ ์์ฉ์ด๋ ์๊ตฌ๋ฅผ ์ง์ํด ์ค๋ค.
์ฌ์ฉ์์ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋จํ๊ฒ ํด์ค๋ค.
์ ๊ทผ ์ ์ด๋ฅผ ํตํ ์๋ ๋ณด์์ด ์ ๊ณต๋๋ค.
๋ ๋ฆฝ์ ์ธ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์ ์๋ค.
ALTER VIEW๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค. ์ฆ ๋ทฐ์ ์ ์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ทฐ๋ก ๊ตฌ์ฑ๋ ๋ด์ฉ์ ๋ํ ์ฝ์
, ์ญ์ , ๊ฐฑ์ , ์ฐ์ฐ์ ์ ์ฝ์ด ๋ฐ๋ฅธ๋ค.
<๋จ์ ๋ทฐ์ธ๊ฒฝ์ฐ INSERT,UPDATE, DELETE ๊ฐ ์์ ๋กญ๋ค ๊ทธ๋ฌ๋ ํจ์, UNION, GROUP BY๋ฑ์ ์ฌ์ฉํ ๋ณตํฉ ๋ทฐ์ธ ๊ฒฝ์ฐ ๋ถ๊ฐ ๋ฅ ํ๋ค. (์กฐ์ธ๋ง ์ฌ์ฉํ ๋ณตํฉ ๋ทฐ๋ ์ ํ์ ์ผ๋ก ๊ฐ๋ฅ)>
๋จ์ ๋ทฐ (Single View)
๋ณตํฉ ๋ทฐ( Complex View)
CREATE VIEW viewTableEx1 AS (
SELECT CustomerID, OrderID, Quantity
FROM Orders
WHERE ProductID = "P1" )
;
-- ์์ฑํ ๋ทฐ ๋ช
์นญ์ viewTableEx1
์๋๋ ๋ ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ์ฌ ๋ทฐ๋ฅผ ๋ง๋ ์์.
CREATE VIEW viewTableEx2 AS (
SELECT Customer.CustomerName, Orders.Quantity
FROM Customer JOIN Orders
ON Customer.CustomerID = Orders.CustomerID )
;
-- ์์ฑํ ๋ทฐ ๋ช
์นญ์ viewTableEx2
๋ทฐ๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฟผ๋ฆฌ ๋ง์ง๋ง์ 'with ready only' ๋ง ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด DML(INSERT, UPDATE, DELETE)์ ์ฌ์ฉํ ์ ์๊ธฐ์ ์ธ๋ถ์ ์ ๊ณตํ ๋ ์ฌ์ฉํ๊ธฐ ์ข์ ์ต์ ์ด๋ค.
DROP VIEW viewTableEx2
;
-- ๋ทฐ viewTableEx2 ์ญ์
โป ๋ทฐ๋ ALTER๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก ํ์ํ ๊ฒฝ์ฐ๋ ์ญ์ ํ ํ ์ฌ์์ฑํ๋ค.
๐ญ " ๊ธฐ์กด ํ ์ด๋ธ์ด ์ ๋ฐ์ดํธ๋๋ฉด ๋ทฐ ํ ์ด๋ธ๋ ์ ๋ฐ์ดํธ๊ฐ ๋ ๊น? "
๋ทฐ๋ฅผ ์กฐํํ ๋๋ง๋ค, ์ตํฐ๋ง์ด์ ์์ ๋ทฐ๋ฅผ ์์ฑํ ๋, ์ ์ฅํด ๋์ Select ๋ฌธ์ด ๋ ๋ผ๊ฐ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋น์ฐํ, ์ฌ์ฉ์๊ฐ ๋ฐ๋ก๋ณด๋ ๊ฐ์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๋ํ ์ ๋ฐ์ดํธ
๐ญ "View์ ๊ฐ์ ์์ ํด๋ ์ค์ ํ ์ด๋ธ์๋ ๋ฐ์๋์ง ์๋์?"
๋ทฐ ํ ์ด๋ธ์ ์๋ฃ๊ฐ ์ถ๊ฐ๋๋ ๊ฒ์ ์ค์ฒด ํ ์ด๋ธ์ ๋ฐ์๋์ง ์๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ฅผ ์ํ๋ค.
์ฐธ๊ณ
https://thalals.tistory.com/346
https://code-lab1.tistory.com/48
https://velog.io/@combi_jihoon/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%B7%B0-%ED%85%8C%EC%9D%B4%EB%B8%94View-table
http://www.tcpschool.com/mysql/mysql_view_createReplace