[DB] ORACLE - 7์ผ


ORACLE



์˜ค๋ผํด 7์ผ

[ VIEW ]

๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋ทฐ์— ํฌํ•จ๋œ ๋งž์ถคํ‘œํ˜„(virtual table)

joinํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ์งˆ์˜๋ฌธ์ด ๊ธธ๊ณ  ๋ณต์žกํ•ด์ง€๋ฉด ์ž‘์„ฑ์ด ์–ด๋ ค์›Œ์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿด๋•Œ๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‘๊ฑฐ๋‚˜ stored query๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์ €์žฅํ•ด๋‘๋ฉด ํ•„์š”ํ•  ๋•Œ ๋งˆ๋‹ค ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ทฐ์™€ ํ…Œ์ด๋ธ”์˜ ์ฐจ์ด๋Š” ๋ทฐ๋Š” ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ์ ์ด๋‹ค.
  • ๋ฒ ์ด์Šคํ…Œ์ด๋ธ”(Base table) : ๋ทฐ๋ฅผ ํ†ตํ•ด ๋ณด์—ฌ์ง€๋Š” ์‹ค์ œํ…Œ์ด๋ธ”
  • ์„ ํƒ์ ์ธ ์ •๋ณด๋งŒ ์ œ๊ณต ๊ฐ€๋Šฅ


[ํ˜•์‹]

create [or replace] [force | noforce ] view ๋ทฐ์ด๋ฆ„ [(alias [,alias,.....)] as ์„œ๋ธŒ์ฟผ๋ฆฌ
[with check option [constraint ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„]]
[with read only [constraint ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„]]
  • create or replace : ์ง€์ •ํ•œ ์ด๋ฆ„์˜ ๋ทฐ๊ฐ€ ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ, ๋™์ผ์ด๋ฆ„์ด ์žˆ์œผ๋ฉด ์ˆ˜์ •
  • force / noforce
    • force : ๋ฒ ์ด์Šคํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ทฐ ์ƒ์„ฑ๊ฐ€๋Šฅ
    • noforce : ๋ฒ ์ด์Šคํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜์ง€ ์•Š์•„๋„ ๋ทฐ ์ƒ์„ฑ๊ฐ€๋Šฅ
  • alias
    • ๋ทฐ์—์„œ ์ƒ์„ฑํ•  ํ‘œํ˜„์‹ ์ด๋ฆ„(ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์ด๋ฆ„์˜๋ฏธ)
    • ์ƒ๋žตํ•˜๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์ด๋ฆ„์ ์šฉ
    • alias์˜ ๊ฐœ์ˆ˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฐœ์ˆ˜์™€ ๋™์ผํ•ด์•ผ ํ•จ
  • ์„œ๋ธŒ์ฟผ๋ฆฌ
    • ๋ทฐ์—์„œ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” select๊ตฌ๋ฌธ
  • ์ œ์•ฝ์กฐ๊ฑด

    • with check option : ๋ทฐ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋งŒ DML์ž‘์—…๊ฐ€๋Šฅ

    • with read only : ๋ทฐ๋ฅผ ํ†ตํ•ด DML์ž‘์—…์•ˆ๋จ
    • ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ฏ€๋กœ ๋ณ„๋„์˜ ์ด๋ฆ„์ง€์ •๊ฐ€๋Šฅ


[๋ทฐ - ์ธ๋ผ์ธ(inline)๊ฐœ๋…]

  • ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ (์ผ๋ฐ˜์ ์œผ๋กœ from์ ˆ์—์„œ ์‚ฌ์šฉ)


[๋ทฐ - Top N๋ถ„์„]

  • Top N๋ถ„์„ : ์กฐ๊ฑด์— ๋งž๋Š” ์ตœ์ƒ์œ„(์ตœํ•˜์œ„) ๋ ˆ์ฝ”๋“œ๋ฅผ N๊ฐœ ์‹๋ณ„ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ

    ์˜ˆ) ์ตœ์ƒ์œ„ ์†Œ๋“์ž3๋ช…

โ€‹ ์ตœ๊ทผ 6๊ฐœ์›”๋™์•ˆ ๊ฐ€์žฅ ๋งŽ์ด ํŒ”๋ฆฐ ์ œํ’ˆ3๊ฐ€์ง€

โ€‹ ์‹ค์ ์ด ๊ฐ€์žฅ ์ข‹์€ ์˜์—…์‚ฌ์› 5๋ช…

  • ์˜ค๋ผํด์—์„œ Top N๋ถ„์„์›๋ฆฌ
    • ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ
    • rownum ์ด๋ผ๋Š” ๊ฐ€์ƒ์˜ ์ปฌ๋Ÿผ์„ ์ด์šฉํ•˜์—ฌ ์ˆœ์„œ๋Œ€๋กœ ์ˆœ๋ฒˆ๋ถ€์—ฌ
    • ๋ถ€์—ฌ๋œ ์ˆœ๋ฒˆ์„ ์ด์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ์ˆ˜๋งŒํผ ์‹๋ณ„
    • rownum๊ฐ’์œผ๋กœ ํŠน์ •ํ–‰์„ ์„ ํƒํ• ์ˆ˜ ์—†์Œ (๋‹จ, Result Set 1st ํ–‰(rownum=1)์€ ์„ ํƒ๊ฐ€๋Šฅ)


ex1 ) ์‚ฌ์›ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๊ฐ€ 90์ธ ์‚ฌ์›๋“ค์„ v_view1์œผ๋กœ ๋ทฐํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ์‹œ์˜ค

(์‚ฌ์›ID,์‚ฌ์›์ด๋ฆ„,๊ธ‰์—ฌ,๋ถ€์„œID๋งŒ ์ถ”๊ฐ€)

create or replace view v_view1
as select employee_id, last_name, salary, department_id from employees
where department_id=90;


[๋ฌธ์ œ 1] ์‚ฌ์›ํ…Œ์ด๋ธ”์—์„œ ๊ธ‰์—ฌ๊ฐ€ 5000 ์ด์ƒ 10000 ์ดํ•˜์ธ ์‚ฌ์›๋“ค๋งŒ v_view2์œผ๋กœ ๋ทฐ๋ฅผ ๋งŒ๋“œ์‹œ์˜ค

(์‚ฌ์›ID, ์‚ฌ์›์ด๋ฆ„, ๊ธ‰์—ฌ, ๋ถ€์„œID)


ex2 ) v_view2 ํ…Œ์ด๋ธ”์—์„œ 103์‚ฌ์›์˜ ๊ธ‰์—ฌ๋ฅผ 9000.00์—์„œ 12000.00์œผ๋กœ ์ˆ˜์ •ํ•˜์‹œ์˜ค

select * from v_view2;
update v_view2 set salary=12000 where employee_id=103;
select * from v_view2; โ† 103์‚ฌ์›์ด ๋น ์กŒ์Œ(๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚จ)


[๋ฌธ์ œ 2] ์‚ฌ์›ํ…Œ์ด๋ธ”๊ณผ ๋ถ€์„œํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์›๋ฒˆํ˜ธ, ์‚ฌ์›๋ช…, ๋ถ€์„œ๋ช…์„ v_view3๋กœ ๋ทฐ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ์‹œ์˜ค

์กฐ๊ฑด1) ๋ถ€์„œ๊ฐ€ 10, 90์ธ ์‚ฌ์›๋งŒ ํ‘œ์‹œํ•˜์‹œ์˜ค

์กฐ๊ฑด2) ํƒ€์ดํ‹€์€ ์‚ฌ๋ฒˆ, ์ด๋ฆ„, ๋ถ€์„œ์ด๋ฆ„์œผ๋กœ ์ถœ๋ ฅํ•˜์‹œ์˜ค

์กฐ๊ฑด3) ์‚ฌ์›๋ฒˆํ˜ธ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์‹œ์˜ค


[๋ฌธ์ œ 3] ๋ถ€์„œID๊ฐ€ 10,90๋ฒˆ ๋ถ€์„œ์ธ ๋ชจ๋“  ์‚ฌ์›๋“ค์˜ ๋ถ€์„œ์œ„์น˜๋ฅผ ํ‘œ์‹œํ•˜์‹œ์˜ค

์กฐ๊ฑด1) v_view4๋กœ ๋ทฐ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ์‹œ์˜ค

์กฐ๊ฑด2) ํƒ€์ดํ‹€์„ ์‚ฌ์›๋ฒˆํ˜ธ, ์‚ฌ์›๋ช…, ๊ธ‰์—ฌ, ์ž…์‚ฌ์ผ, ๋ถ€์„œ๋ช…, ๋ถ€์„œ์œ„์น˜(city)๋กœ ํ‘œ์‹œํ•˜์‹œ์˜ค

์กฐ๊ฑด3) ์‚ฌ์›๋ฒˆํ˜ธ ์ˆœ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์‹œ์˜ค

์กฐ๊ฑด4) ๊ธ‰์—ฌ๋Š” ๋ฐฑ๋‹จ์œ„ ์ ˆ์‚ญํ•˜๊ณ , ์„ธ์ž๋ฆฌ ๋งˆ๋‹ค ์ฝค๋งˆ์™€ โ€˜์›โ€™์„ ํ‘œ์‹œํ•˜์‹œ์˜ค

์กฐ๊ฑด5) ์ž…์‚ฌ์ผ์€ โ€˜2004๋…„ 10์›” 02์ผโ€™ ํ˜•์‹์œผ๋กœ ํ‘œ์‹œํ•˜์‹œ์˜ค


ex3 ) ๋ทฐ์— ์ œ์•ฝ์กฐ๊ฑด๋‹ฌ๊ธฐ

์‚ฌ์›ํ…Œ์ด๋ธ”์—์„œ ์—…๋ฌดID โ€˜IT_PROGโ€™์ธ ์‚ฌ์›๋“ค์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์—…๋ฌดID๋งŒ v_view5 ๋ทฐ ํ…Œ์ด๋ธ”์„ ์ž‘์„ฑํ•˜์‹œ์˜ค,

๋‹จ ์ˆ˜์ •๋ถˆ๊ฐ€์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์‹œ์˜ค

create or replace view v_view5
as select employee_id, last_name, job_id
from employees
where job_id='IT_PROG'
with read only;

select * from v_view5;
delete from v_view5;


ex4 ) ๋ทฐ์— ์ œ์•ฝ์กฐ๊ฑด ๋‹ฌ๊ธฐ

์‚ฌ์›ํ…Œ์ด๋ธ”์—์„œ ์—…๋ฌดID โ€˜IT_PROGโ€™์ธ ์‚ฌ์›๋“ค์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ด๋ฉ”์ผ, ์ž…์‚ฌ์ผ, ์—…๋ฌดID๋งŒ v_view6 ๋ทฐ ํ…Œ์ด๋ธ”์„ ์ž‘์„ฑํ•˜์‹œ์˜ค,

๋‹จ ์—…๋ฌดID๊ฐ€ โ€˜IT_PROGโ€™์ธ ์‚ฌ์›๋“ค๋งŒ ์ถ”๊ฐ€,์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์‹œ์˜ค

create or replace view v_view6
as select employee_id, last_name, email, hire_date, job_id
from employees
where job_id='IT_PROG'
with check option;

select * from v_view6;

insert into v_view6(employee_id, last_name, email, hire_date, job_id)
values(500,'kim','candy','2004-01-01','Sales'); 
โ†’ ์—๋Ÿฌ:with check option์ œ์•ฝ์กฐ๊ฑด์— ์œ„๋ฐฐ

update v_view6 set job_id='Sales' where employee_id=103;
โ†’ ์—๋Ÿฌ:with check option์ œ์•ฝ์กฐ๊ฑด์— ์œ„๋ฐฐ

insert into v_view6(employee_id, last_name, email, hire_date, job_id)
values(500,'kim','candy','2004-01-01','IT_PROG');

select * from v_view6;


[๋ฌธ์ œ 4]

TableName : bookshop

isbn   varchar2(10)   ๊ธฐ๋ณธํ‚ค(์ œ์•ฝ์กฐ๊ฑด๋ช…:PISBN)  ISBN
title    varchar2(50) ๋„๊ฐ’ ํ—ˆ์šฉX (์ œ์•ฝ์กฐ๊ฑด๋ช…:CTIT) ์ฑ…์ œ๋ชฉ
author  varchar2(50)  ์ €์ž 
price   number    	  ๊ธˆ์•ก
company varchar2(30)  ์ถœํŒ์‚ฌ
-------------------------------------------------------
is001 ์ž๋ฐ”3์ผ์™„์„ฑ      ๊น€์ž๋ฐ” 25000  	์•ผ๋ฉ”๋ฃจ์ถœํŒ์‚ฌ
pa002 JSP๋‹ฌ์ธ๋˜๊ธฐ      ์ด๋‹ฌ์ธ 28000  	 ๊ณต๊ฐˆ๋‹ท์ปด
or003 ์˜ค๋ผํด๋ฌด์ž‘์ •๋”ฐ๋ผํ•˜๊ธฐ  ๋ฐ•๋”ฐ๋ผ 23500  ์•ผ๋ฉ”๋ฃจ์ถœํŒ์‚ฌ
-------------------------------------------------------


TableName : bookorder

idx  number    		primary key  ์ผ๋ จ๋ฒˆํ˜ธ     
isbn varchar2(10)	FKISBN  bookshop์˜ isbn์˜ ์ž์‹ํ‚ค
qty  number     	์ˆ˜๋Ÿ‰

-----------------------------------
์‹œํ€€์Šค๋ช… : idx_seq  ์ฆ๊ฐ€๊ฐ’: 1 ์‹œ์ž‘๊ฐ’ 1
-----------------------------------
1     is001   2
2     or003   3
3     pa002   5
4     is001   3
5     or003  10

โ†‘ ์‹œํ€€์Šค๊ฐ์ฒด ์ด์šฉ
ViewName : bs_view

์ฑ…์ œ๋ชฉ    ์ €์ž   ์ดํŒ๋งค๊ธˆ์•ก 
---------------------------------------              
์กฐ๊ฑด1) ์ดํŒ๋งค๊ธˆ์•ก์€ qty * price๋กœ ํ•˜์‹œ์˜ค    

์กฐ๊ฑด2) ์ˆ˜์ •๋ถˆ๊ฐ€์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์‹œ์˜ค


ex5 ) ๋ทฐ โ€“ ์ธ๋ผ์ธ(ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์˜ ์—ญํ• ) select ~ from (select ~~)

์‚ฌ์›ํ…Œ์ด๋ธ”์„ ๊ฐ€์ง€๊ณ  ๋ถ€์„œ๋ณ„ ํ‰๊ท ๊ธ‰์—ฌ๋ฅผ ๋ทฐ(v_view7)๋กœ ์ž‘์„ฑํ•˜์‹œ์˜ค

์กฐ๊ฑด1) ๋ฐ˜์˜ฌ๋ฆผํ•ด์„œ 1000๋‹จ์œ„๊นŒ์ง€ ๊ตฌํ•˜์‹œ์˜ค

์กฐ๊ฑด2) ํƒ€์ดํ‹€์€ ๋ถ€์„œID,๋ถ€์„œํ‰๊ท 

์กฐ๊ฑด3) ๋ถ€์„œ๋ณ„๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์ •๋ ฌํ•˜์‹œ์˜ค

์กฐ๊ฑด4) ๋ถ€์„œID๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ 5000์œผ๋กœ ํ‘œ์‹œํ•˜์‹œ์˜ค

VIEW ๊ฐ์ฒด ์ด์šฉ

create or replace view v_view7("๋ถ€์„œID", "๋ถ€์„œํ‰๊ท ")
as select nvl(department_id, 5000),
      round( avg(salary), -3)
      from employees
      group by department_id
      order by department_id asc;
      
select * from v_view7;

VIEW โ€“ INLINE

select ๋ถ€์„œID, ๋ถ€์„œํ‰๊ท 
from (select nvl(department_id, 5000) "๋ถ€์„œID", 
      round( avg(salary), -3) "๋ถ€์„œํ‰๊ท "
      from employees
      group by department_id
      order by department_id asc);


[๋ฌธ์ œ 5] ๋ถ€์„œ๋ณ„ ์ตœ๋Œ€๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์›์˜ ๋ถ€์„œ๋ช…, ์ตœ๋Œ€๊ธ‰์—ฌ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค

โ€‹ 1๋ฒˆ ๋ฌธ์ œ์— ์ตœ๋Œ€๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์›์˜ ์ด๋ฆ„๋„ ๊ตฌํ•˜์‹œ์˜ค


ex6 ) Top N๋ถ„์„

๊ธ‰์—ฌ๋ฅผ ๊ฐ€์žฅ๋งŽ์ด ๋ฐ›๋Š” ์‚ฌ์›3๋ช…์˜ ์ด๋ฆ„,๊ธ‰์—ฌ๋ฅผ ํ‘œ์‹œํ•˜์‹œ์˜ค

select rownum, last_name, salary
from (select last_name, nvl(salary,0)as salary from employees order by 2 desc)  
๋จผ์ €์ˆ˜ํ–‰๋œ๋‹ค.
where rownum<=3;


ex7 ) ์ตœ๊ณ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์›1๋ช…์„ ๊ตฌํ•˜์‹œ์˜ค

select rownum, last_name, salary
from (select last_name, nvl(salary,0)as salary from employees order by 2 desc)
where rownum=1;  โ† rownum=2๋Š” error (ํŠน์ •ํ–‰์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ)


ex8 ) ๊ธ‰์—ฌ์˜ ์ˆœ์œ„๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ํ–ˆ์„ ๋•Œ, 3๊ฐœ์”ฉ ๋ฌถ์–ด์„œ 2๋ฒˆ์งธ ๊ทธ๋ฃน์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค

(4,5,6 ์ˆœ์œ„์˜ ์‚ฌ์›์ถœ๋ ฅ ==> ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•)

select * from (select rownum , ceil(rownum/3) as page, tt.*   
	๋‘๋ฒˆ์งธ๋กœ ์ˆ˜ํ–‰          							tt์—์žˆ๋Š” ๋ชจ๋“ ํ•ญ๋ชฉ์„ ๊ฐ€์ ธ์™€๋ผ         
from (select last_name, nvl(salary,0)as salary from employees order by salary desc)tt
	์ฒซ๋ฒˆ์งธ๋กœ์ˆ˜ํ–‰													๊ฐ€์ ธ์˜จ ๊ฒฐ๊ณผ๋ฌผ์„ tt๋ผ๊ณ ๋ช…์‹œ
) where page=2;
	์„ธ๋ฒˆ์งธ๋กœ ์ˆ˜ํ–‰


โ€ป
select * from
(select rownum rn, tt.* from 
๋‘๋ฒˆ์งธ๋กœ ์ˆ˜ํ–‰                     tt์—์žˆ๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๊ฐ€์ ธ์™€๋ผ     
(select last_name, nvl(salary,0)as salary from employees order by 2 desc)tt
์ฒซ๋ฒˆ์งธ๋กœ์ˆ˜ํ–‰                                            ๊ฐ€์ ธ์˜จ ๊ฒฐ๊ณผ๋ฌผ์„ tt๋ผ๊ณ ๋ช…์‹œ
) where rn>=4 and rn<=6;
์›ํ•˜๋Š” ๊ฐ’ ์•„๋ฌด๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.


[๋ฌธ์ œ 6] ์‚ฌ์›๋“ค์˜ ์—ฐ๋ด‰์„ ๊ตฌํ•œ ํ›„ ์ตœํ•˜์œ„ ์—ฐ๋ด‰์ž 5๋ช…์„ ์ถ”์ถœํ•˜์‹œ์˜ค

์กฐ๊ฑด1) ์—ฐ๋ด‰ = ๊ธ‰์—ฌ12+(๊ธ‰์—ฌ12*์ปค๋ฏธ์…˜)

์กฐ๊ฑด2) ํƒ€์ดํ‹€์€ ์‚ฌ์›์ด๋ฆ„ , ๋ถ€์„œ๋ช…, ์—ฐ๋ด‰

์กฐ๊ฑด3) ์—ฐ๋ด‰์€ ๏ฟฆ25,000 ํ˜•์‹์œผ๋กœ ํ•˜์‹œ์˜ค