๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€/Oracle

[ex20] view

ex20_view
    
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด
    1. ํ…Œ์ด๋ธ”
    2. ๊ณ„์ •(hr)
    3. ์ œ์•ฝ์‚ฌํ•ญ
    4. ์‹œํ€€์Šค
    5. ๋ทฐ
    
    View, ๋ทฐ
    - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด ์ค‘ ํ•˜๋‚˜
    - ๊ฐ€์ƒ ํ…Œ์ด๋ธ”, ๋ทฐ ํ…Œ์ด๋ธ” ๋“ฑ..
    - ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค.(*****)
    - ๋ทฐ๋Š” SQL์„ ์ €์žฅํ•œ ๊ฐ์ฒด์ด๋‹ค.
    - ๋ทฐ๋Š” ํ˜ธ์ถœ๋ ๋•Œ๋งˆ๋‹ค ์ €์žฅ๋œ SQL์„ ์‹คํ–‰ํ•œ๋‹ค.(์‹ค์‹œ๊ฐ„ ๊ฐ€์ƒ ํ…Œ์ด๋ธ”) > ์›๋ณธํ…Œ์ด๋ธ” ์ˆ˜์ •์‹œ view ํ…Œ์ด๋ธ”๋„ ์ˆ˜์ •๋จ
    
    View ์—ญํ• (๋ชฉ์ )
    1. ์ฟผ๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•œ๋‹ค. > ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
    2. ๋ณด์•ˆ ๊ด€๋ฆฌ
    3. ์ฟผ๋ฆฌ > ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž(hr ๋“ฑ)๊ณผ ๊ณต์œ 

 

    create view ๋ทฐ๋ช…
    as
    select ๋ฌธ;
    
    create [or replace] view ๋ทฐ๋ช…
    as
    select๋ฌธ;
    

create or replace view vwInsa -- tblInsa ํ…Œ์ด๋ธ”์˜ ๋ณต์‚ฌ๋ณธ
as
select * from tblInsa;


select * from vwInsa; --tblInsa ์ฒ˜๋Ÿผ ํ–‰๋™

--replace ๋•Œ๋ฌธ์— ๋˜‘๊ฐ™์€ ์ด๋ฆ„์˜ ์˜ค๋ธŒ์ ํŠธ ์žˆ์œผ๋ฉด ์ˆ˜์ •ํ•ด์คŒ > ๋˜‘๊ฐ™์€ ๊ฐ์ฒด ์ƒ์„ฑํ•ด๋„ ์˜ค๋ฅ˜ ์•ˆ ๋‚จ
create or replace view vwInsa
as
select name, jikwi, city, buseo from tblInsa where buseo = '์˜์—…๋ถ€';

select * from vwInsa; -- ๋ทฐ == ์˜์—…๋ถ€ ํ…Œ์ด๋ธ”

-- ์˜์—…๋ถ€ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ(์ปฌ๋Ÿผ 4๊ฐœ)
select name, jikwi, city, buseo from tblInsa where buseo = '์˜์—…๋ถ€';
select * from vwInsa;
-- view ๋ฐ˜๋“œ์‹œ ์จ์•ผํ•˜๋Š” ๊ทน๋‹จ์ ์ธ ์ƒํ™ฉ
-- ๋น„๋””์˜ค ๋Œ€์—ฌ์  ์‚ฌ์žฅ > ๋ฐ˜๋ณต ์—…๋ฌด > view๋กœ ํ•˜๋ฉด ๊ธด์ฟผ๋ฆฌ ๋ฐ˜๋ณต ๊ฐ„๋‹จํ•ด์ง
create or replace view ๋Œ€์—ฌ์ฒดํฌ
as
-- ์—ฐ์ฒด์ผ์ˆ˜ : ํ˜„์žฌ๋‚ ์งœ - (๋Œ€์—ฌ๋‚ ์งœ + ๋Œ€์—ฌ๊ธฐ๊ฐ„)
select
    m.name as mname,
    v.name as vname,
    to_char(r.rentdate, 'yyyy-mm-dd') as rentdate,
    case
        when r.retdate is not null then '๋ฐ˜๋‚ฉ์™„๋ฃŒ'
        else '๋ฏธ๋ฐ˜๋‚ฉ'
    end as state,
    case
        when r.retdate is null 
            then round(sysdate - (r.rentdate + (select period from tblGenre where seq = v.genre))) 
    end as ์—ฐ์ฒด์ผ์ˆ˜,
    case
        when r.retdate is null
            then round((sysdate - (r.rentdate + (select period from tblGenre where seq = v.genre))))
                * g.price * 0.1
    end as ์—ฐ์ฒด๊ธˆ -- ๋Œ€์—ฌ๊ฐ€๊ฒฉ(10%) x ์—ฐ์ฒด์ผ

--    r.rentdate as "๋Œ€์—ฌ๋‚ ์งœ",
--    (select period from tblGenre where seq = v.genre) as "๋Œ€์—ฌ๊ธฐ๊ฐ„(์ผ)",
--    r.rentdate + (select period from tblGenre where seq = v.genre) as "๋ฐ˜๋‚ฉ๋‚ ์งœ",
--    sysdate - (r.rentdate + (select period from tblGenre where seq = v.genre)) as "์—ฐ์ฒด๊ธฐ๊ฐ„(์ผ)"
    
from tblRent r
    inner join tblVideo v
        on v.seq = r.video
            inner join tblMember m
                on m.seq = r.member
                    inner join tblGenre g
                        on g.seq = v.genre
                            order by state asc;


select * from ๋Œ€์—ฌ์ฒดํฌ;

-- ๋ทฐ ์ •์˜ > select ๊ฒฐ๊ณผ์…‹์˜ ๋ณต์‚ฌ๋ณธ..? > ๋ฐ์ดํ„ฐ ์ €์žฅํ•œ ๊ฐ์ฒด(X)
-- ๋ทฐ ์ •์˜ > select๋ฌธ์„ ์ €์žฅํ•œ ๊ฐ์ฒด > SQL ์ €์žฅํ•œ ๊ฐ์ฒด
create or replace view vwComedian
as
select * from tblComedian; 

select * from tblComedian; --์›๋ณธ ํ…Œ์ด๋ธ”
select * from vwComedian;  --๋ณต์‚ฌ ํ…Œ์ด๋ธ”

update tblComedian set
    weight = 70 where first = '์žฌ์„'; --๋ณต์‚ฌ ํ…Œ์ด๋ธ”์—๋„ ๊ฒฐ๊ณผ ๋ฐ”๋€œ

select * from vwComedian; -- ์žฌ์‚ฌ์šฉ ๋ชฉ์  (์•„๋ž˜๋ž‘ ๋˜‘๊ฐ™์Œ)
select * from (select * from tblComedian); -- from ์„œ๋ธŒ์ฟผ๋ฆฌ == ์ธ๋ผ์ธ ๋ทฐ > 1ํšŒ์šฉ




-- ๋ณด์•ˆ(๊ถŒํ•œ)
select * from tblInsa; --์ „์ง์› + ๋ชจ๋“  ์ •๋ณด

-- ์‹ ์ž…์‚ฌ์›(hr) > ์˜์—…๋ถ€ > ์—…๋ฌด > ์˜์—…๋ถ€ ์ง์›๋“ค์—๊ฒŒ ์ผ๊ด€ ๋ฌธ์ž ๋ฉ”์‹œ์ง€ ์ „์†ก
select * from tblInsa; --์‹ ์ž…์‚ฌ์›์—๊ฒŒ tblInsa ์ ‘๊ทผํ•  ๊ถŒํ•œ > tblInsa ์ ‘๊ทผ ์ œํ•œ

create or replace view ์—ฐ๋ฝ์ฒ˜
as
select name, tel from tblInsa where buseo = '์˜์—…๋ถ€';

select * from ์—ฐ๋ฝ์ฒ˜; --์‹ ์ž…์‚ฌ์›์—๊ฒŒ ์—ฐ๋ฝ์ฒ˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌ




create or replace view vwTodo
as
select * from tblTodo;

-- ๋ทฐ ์‚ฌ์šฉ
-- 1. select > ๊ฐ€๋Šฅ > ์ ˆ๋Œ€ ์‚ฌ์šฉ๊ธˆ์ง€ > ๋ทฐ๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค(***) ์ฝ๊ธฐ ์ „์šฉ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ์ƒ๊ฐํ• ๊ฒƒ
-- 2. insert > ๊ฐ€๋Šฅ > ์ ˆ๋Œ€ ์‚ฌ์šฉ๊ธˆ์ง€
-- 3. update > ๊ฐ€๋Šฅ > ์ ˆ๋Œ€ ์‚ฌ์šฉ๊ธˆ์ง€
-- 4. delete > ๊ฐ€๋Šฅ > ์ ˆ๋Œ€ ์‚ฌ์šฉ๊ธˆ์ง€

select * from vwTodo; --๋‹จ์ˆœ๋ทฐ > ๋ทฐ์˜ select๋ฌธ์ด 1๊ฐœ์˜ ํ…Œ์ด๋ธ”๋กœ ๊ตฌ์„ฑ
insert into vwTodo values (21, '์˜ค๋ผํด ๋ณต์Šตํ•˜๊ธฐ', sysdate, null);
update vwTodo set title = '์˜ค๋ผํด ์ •๋ฆฌํ•˜๊ธฐ' where seq = 21;
delete from vwTodo where seq = 21;

select * from ๋Œ€์—ฌ์ฒดํฌ; --๋ณตํ•ฉ๋ทฐ > 2๊ฐœ์˜ ์ด์ƒ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ด์„œ select
insert into ๋Œ€์—ฌ์ฒดํฌ values ('ํ™๊ธธ๋™', '๋ฐ˜์ง€์˜ ์ œ์™•', sysdate, '๋ฏธ๋ฐ˜๋‚ฉ', 0, 0); --์—๋Ÿฌ. ๊ฐ๊ฐ ๋‹ค๋ฅธํ…Œ์ด๋ธ”.

--๋‹จ์ˆœ๋ทฐ, ๋ณตํ•ฉ๋ทฐ ์‚ฌ์šฉ์ž๋Š” ๊ตฌ๋ถ„ ๋ชปํ•จ.. select๋งŒ ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•  ๊ฒƒ.

'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€ > Oracle' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ex22] alter  (0) 2023.03.26
[ex21] union  (0) 2023.03.26
[ex19] join  (0) 2023.03.25
[ex18] subquery  (0) 2023.03.21
[ex17] group by  (0) 2023.03.19