๐ก์ฟผ๋ฆฌ๋ฌธ์ ์ ์ฅํ ๊ฐ์ฒด๋ก ๊ฐ์ํ ์ด๋ธ์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
์ค์ง์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅํ๊ณ ์์ง ์๊ณ ์ฟผ๋ฆฌ๋ง ์ ์ฅํ์ง๋ง ํ ์ด๋ธ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
VIEW๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฝ๊ณ ์ดํดํ ์ ์๋๋ก ๋๋ ๋์์, ์๋ณธ ๋ฐ์ดํฐ์ ๋ณด์์ ์ ์งํ๋๋ฐ ๋์์ด ๋๋ค.
์ฟผ๋ฆฌ๊ฐ ๋ณต์กํด์ง๋ฉด ๊ตฌ๋ฌธ์ด ๊ธธ์ด์ง ์ ์๋ค. ์ด๋ฌํ ๋ณต์กํ SELECT ๊ตฌ๋ฌธ์ด ๊ธฐ๋ฅ์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, ํ์ํ ๋๋ง๋ค ์์ฑํ๋ ๊ฒ๋ณด๋ค ๊ฐ์์ ํ ์ด๋ธ์ ๊ฐ์ ธ๋ค ์ฐ๋ ๊ฒ์ด ์ฒ๋ฆฌํ๊ธฐ ์ฝ๋ค.
์ฒ์ ์ ์ ๋ฅผ ์์ฑํ๋ฉด ๋ชจ๋ ๊ถํ์ ๊ฐ์ง๊ฒ ๋๋ค. ํ์ง๋ง ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋์๋ ๊ถํ์ ์ธ๋ถ์ ์ผ๋ก ๋๋ ์ผ ํ ํ์๊ฐ ์๋ค. ๋ณด์์ฑ์ด ํ์ํ ์๋ณธ DB์์ ์ ๊ทผ์ ์ ํํ๊ธฐ ์ํด View๋ฅผ ์์ฑํ์ฌ ์ ๊ทผ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ง ๋ณด์ฌ์ฃผ๊ณ ์๋ณธ ํ ์ด๋ธ์ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ๊ฒ ๊ด๋ฆฌํ๋ค.
CREATE VIEW hansik AS
SELECT
menu_code
, menu_name
, menu_price
, category_code
, orderable_status
FROM tbl_menu
WHERE category_code = 4;
SELECT * FROM hansik;

(1) ์๋ณธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ฉด View์๋ ๋ฐ์๋๋ค.
INSERT
INTO tbl_menu
VALUES(NULL, '์ํ๋ง๊ตญ๋ฐฅ', 5500, 4, 'Y');

(2) view์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ฉด ์๋ณธ ํ ์ด๋ธ์๋ ๋ฐ์๋๋ค.
INSERT
INTO hansik
VALUES (99, '์์ ๊ณผ๋ง๊ตญ๋ฐฅ', 5500, 4, 'Y');

UPDATE hansik
SET menu_name = '๋ฒํฐ๋ง๊ตญ๋ฐฅ'
, menu_price = 5700
WHERE menu_code = 99;
View

Base Table

๋ทฐ ์ ์์ ํฌํจ๋์ง ์์ ์ปฌ๋ผ์ ์กฐ์ํ ๋
๋ทฐ์ ํฌํจ๋์ง ์์ ์ปฌ๋ผ ์ค ๋ฒ ์ด์ค ํ ์ด๋ธ์ not null ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ
์ฐ์ ํํ์์ด ์ ์๋ ๊ฒฝ์ฐ
join์ ์ด์ฉํด ์ฌ๋ฌ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ
distinct๋ฅผ ํฌํจํ ๊ฒฝ์ฐ
๊ทธ๋ฃนํจ์ ๋๋ group by ๋ฑ์ ํฌํจํ ๊ฒฝ์ฐ
CREATE OR REPLACE VIEW hansik AS
SELECT
menu_code
, menu_name
, menu_price
, category_code
, orderable_status
FROM tbl_menu
WHERE category_code = 4;
CREATE OR REPLACE VIEW hansik_with_check AS
SELECT
menu_code
, menu_name
, menu_price
, category_code
, orderable_status
FROM tbl_menu
WHERE category_code = 4;
WITH CHECK OPTION;
INSERT
INTO hansik_with_check
VALUES(100, '๊ฐ์ํ', 8000, 3, 'Y'); -- ์ฝ์
์คํจ

INSERT
INTO hansik
VALUES(100, '๊ฐ์ํ', 8000, 3, 'Y'); -- check option ์์ด์ ์ฝ์
๊ฐ๋ฅ

DROP VIEW hansik;
DROP VIEW hansik_with_check;