๐ก SELECT ์ฟผ๋ฆฌ๋ฌธ์ ์ ์ฅํ ๊ฐ์ฒด๋ก
๊ฐ์ํ ์ด๋ธ์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
์ค์ง์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅํ๊ณ ์์ง ์๊ณ ์ฟผ๋ฆฌ๋ง ์ ์ฅํ์ง๋ง ํ ์ด๋ธ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
VIEW๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฝ๊ณ ์ดํดํ ์ ์๋๋ก ๋๋ ๋์์, ์๋ณธ ๋ฐ์ดํฐ์ ๋ณด์์ ์ ์งํ๋๋ฐ ๋์์ด ๋๋ค.
VIEW ์์ฑ ํ ์กฐํ
SELECT * FROM tbl_menu;
-- VIEW ์์ฑ
CREATE VIEW hansik AS
SELECT
menu_code
, menu_name
, menu_price
, category_code
, orderable_status
FROM tbl_menu
WHERE category_code = 4;
-- ์์ฑ๋ VIEW ์กฐํ
SELECT * FROM hansik;
โ ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋๋ฉด VIEW์ ๊ฒฐ๊ณผ๋ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค.
INSERT
INTO tbl_menu
VALUES (null, '์ํ๋ง๊ตญ๋ฐฅ', 5500, 4, 'Y');
SELECT * FROM hansik;
VIEW๋ฅผ ํตํ DML ์์
์ ๋ฒ ์ด์ค ํ
์ด๋ธ์๋ ์ํฅ์ ์ฃผ๊ฒ ๋๋ค.
โ
VIEW๋ AUTO_INCREMENT๊ฐ ์์ผ๋ฏ๋ก pk ์ปฌ๋ผ์ ๊ฐ์ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค.
โ
VIEW๋ฅผ ํตํ INSERT ์ดํ VIEW ์กฐํ ๋ฐ ๋ฒ ์ด์ค ํ
์ด๋ธ ์กฐํ
-- INSERT INTO hansik VALUES (null, '์ํ๋ง๊ตญ๋ฐฅ', 5500, 4, 'Y'); -- ์๋ฌ ๋ฐ์
INSERT
INTO hansik
VALUES (99, '์์ ๊ณผ๋ง๊ตญ๋ฐฅ', 5500, 4, 'Y');
SELECT * FROM hansik;
SELECT * FROM tbl_menu;
โ VIEW๋ฅผ ํตํ UPDATE ์ดํ VIEW ์กฐํ ๋ฐ ๋ฒ ์ด์ค ํ ์ด๋ธ ์กฐํ
UPDATE hansik
SET menu_name = '๋ฒํฐ๋ง๊ตญ๋ฐฅ', menu_price = 5700
WHERE menu_code = 99;
SELECT * FROM hansik;
SELECT * FROM tbl_menu;
โ VIEW๋ฅผ ํตํ DELETE ์ดํ VIEW ์กฐํ ๋ฐ ๋ฒ ์ด์ค ํ ์ด๋ธ ์กฐํ
DELETE FROM hansik WHERE menu_code = 99;
SELECT * FROM hansik;
SELECT * FROM tbl_menu;
์ฌ์ฉ๋ SUBQUERY์ ๋ฐ๋ผ DMB ๋ช ๋ น์ด๋ก ์กฐ์์ด ๋ถ๊ฐ๋ฅํ ์ ์๋ค.
1. ๋ทฐ ์ ์์ ํฌํจ๋์ง ์์ ์ปฌ๋ผ์ ์กฐ์ํ๋ ๊ฒฝ์ฐ
2. ๋ทฐ์ ํฌํจ๋์ง ์์ ์ปฌ๋ผ ์ค์ ๋ฒ ์ด์ค๊ฐ ๋๋ ํ ์ด๋ธ ์ปฌ๋ผ์ด NOT NULL ์ ์ฝ์กฐ๊ฑด์ด ์ง์ ๋ ๊ฒฝ์ฐ
3. ์ฐ์ ํํ์์ด ์ ์๋ ๊ฒฝ์ฐ
4. JOIN์ ์ด์ฉํด ์ฌ๋ฌ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ
5. DISTINCT๋ฅผ ํฌํจํ ๊ฒฝ์ฐ
6. ๊ทธ๋ฃนํจ์๋ GROUP BY ์ ์ ํฌํจํ ๊ฒฝ์ฐ
โ VIEW์ ์ฐ์ธ SUBQUERY ์์ ์ฐ์ฐ ๊ฒฐ๊ณผ ์ปฌ๋ผ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
DROP VIEW hansik;
โ
OR REPLACE ์ต์
ํ
์ด๋ธ์ DROPํ์ง ์๊ณ ๊ธฐ์กด์ VIEW๋ฅผ ์๋ก์ด VIEW๋ก ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ค.
CREATE OR REPLACE VIEW hansik AS
SELECT
menu_code AS '๋ฉ๋ด์ฝ๋'
, menu_name '๋ฉ๋ด๋ช
'
, category_name '์นดํ
๊ณ ๋ฆฌ๋ช
'
FROM tbl_menu a
JOIN tbl_category b ON a.category_code = b.category_code
WHERE b.category_name = 'ํ์';
SELECT * FROM hansik;