๐Ÿฆญ VIEW

๋‚˜๋‚˜'s Brainยท2024๋…„ 7์›” 9์ผ

MariaDB

๋ชฉ๋ก ๋ณด๊ธฐ
13/15
post-thumbnail

๐Ÿ“ VIEW

๐Ÿ’ก SELECT ์ฟผ๋ฆฌ๋ฌธ์„ ์ €์žฅํ•œ ๊ฐ์ฒด๋กœ ๊ฐ€์ƒํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.
์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ณ  ์ฟผ๋ฆฌ๋งŒ ์ €์žฅํ–ˆ์ง€๋งŒ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
VIEW๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋™์‹œ์—, ์›๋ณธ ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.

๐Ÿ”– 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๋ฅผ ํ†ตํ•œ DML ์ž‘์—…์€ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์—๋„ ์˜ํ–ฅ์„ ์ฃผ๊ฒŒ ๋œ๋‹ค.

โžก๏ธ VIEW๋ฅผ ํ†ตํ•œ INSERT

โœ… 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 ์ดํ›„ VIEW ์กฐํšŒ ๋ฐ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์กฐํšŒ

    UPDATE hansik
       SET menu_name = '๋ฒ„ํ„ฐ๋ง›๊ตญ๋ฐฅ', menu_price = 5700 
     WHERE menu_code = 99;
    SELECT * FROM hansik;
    SELECT * FROM tbl_menu;

โžก๏ธ VIEW๋ฅผ ํ†ตํ•œ DELETE

โœ… VIEW๋ฅผ ํ†ตํ•œ DELETE ์ดํ›„ VIEW ์กฐํšŒ ๋ฐ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์กฐํšŒ

    DELETE FROM hansik WHERE menu_code = 99;
    SELECT * FROM hansik;
    SELECT * FROM tbl_menu;

โžก๏ธ VIEW๋กœ DML ๋ช…๋ น์–ด๋กœ ์กฐ์ž‘์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ

์‚ฌ์šฉ๋œ SUBQUERY์— ๋”ฐ๋ผ DMB ๋ช…๋ น์–ด๋กœ ์กฐ์ž‘์ด ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ๋ทฐ ์ •์˜์— ํฌํ•จ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
2. ๋ทฐ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ ์ค‘์— ๋ฒ ์ด์Šค๊ฐ€ ๋˜๋Š” ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์ด NOT NULL ์ œ์•ฝ์กฐ๊ฑด์ด ์ง€์ •๋œ ๊ฒฝ์šฐ
3. ์‚ฐ์ˆ  ํ‘œํ˜„์‹์ด ์ •์˜๋œ ๊ฒฝ์šฐ
4. JOIN์„ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•œ ๊ฒฝ์šฐ
5. DISTINCT๋ฅผ ํฌํ•จํ•œ ๊ฒฝ์šฐ
6. ๊ทธ๋ฃนํ•จ์ˆ˜๋‚˜ GROUP BY ์ ˆ์„ ํฌํ•จํ•œ ๊ฒฝ์šฐ

โžก๏ธ VIEW ์‚ญ์ œ

โœ… 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;
profile
"๋กœ์ปฌ์—์„  ๋ฌธ์ œ์—†์—ˆ๋Š”๋ฐโ€ฆ?"

0๊ฐœ์˜ ๋Œ“๊ธ€