hara

Oracle Quiz4 본문

공부/DataBase

Oracle Quiz4

하랄라 2017. 2. 22. 00:20


Oracle을 이용한 sql전체적인 문제(pl-sql포함)

[1~2지문]

CREATE __(1)__ VIEW view1

AS 

SELECT info_no, info_date 

FROM order_info 

WHERE info_date < SYSDATE 

WITH CHECK OPTION


1.이름이 'view1'인 뷰의 구조를 변경하기 위한 (1)을 완성하시오.

or replace


2.'view1'이 만들어진 상태에서 다음중 오류발생하는 SQL문을 고르시오. (1),(2),(3)

1)INSERT INTO view1 VALUES (999, SYSDATE+1); 

2)INSERT INTO view1(info_no) VALUES (999);

3)UPDATE view1 SET info_date = SYSDATE+1;

4)UPDATE view1 SET info_no = 999;


3.시퀀스의 NEXTVAL와CURRVAL이 사용되지 못하는 곳을 적으시오.

-view의 select 절

-distinct 키워드가 있는 select문

-group by, having, order by절이 있는 select문

-select,delete,update의 서브쿼리

-create talbe, alter table 명령의 default값


4.인덱스를 만들면 안되는 경우에 대해 적으시오.

-테이블에 행의 수가 적을 때

-where문에 해달 컬림이 자주 사용되지 않을때

-검색 결과가 전체 데이터의 10%~15% 이상일때

-테이블에 DML 작업이 많은 경우 즉, 입력 수정 삭제 등이 자주 일어날때


5.SQL과 PLSQL의 차이점을 설명하시오.

plsql은 sql에 확장된 것이며,

변수 선언, 비교처리, 반복처리를 할 수 있습니다.


6.procedure와 function의 차이점을 설명하시오.

procedure은 반환값이 없는 반면 function은 반환값이 있습니다.


7.패키지의 용도를 설명하시오.

관련 있는 프로시저를 보다 효율적으로 관리하기 위해 사용합니다.


8.다음 구문이 정상실행되도록 PLSQL구문을 완성하시오.

exec my.a; -->'a입니다'가 출력됨

exec my.b('hello'); -->'HELLO'가 출력됨

exec my.b('bonjour');-->'BONJOUR'가 출력됨

var result varchar2(10);

exec :result = my.c(94); --> 인자값이 '90'점이상이면 A를 반환

print result -->'A'가 출력            '80'점이상이면 B를 반환

                                      '70'점이상이면 C를 반환

exec :result = my.c(80);              '60'점이상이면 D

print result -->'B'가 출력             60미만이면 F를 반환


exec :result = my.c(71);

print result -->'C'가 출력

-------------------------------------

set serveroutput on


create or replace package my

is

 procedure a;

 procedure b(ch varchar2);

 function c(num number) return varchar2;

end;

/


create or replace package body my

is

 procedure a

 is

 begin

  dbms_output.put_line('a입니다');

 end;

 

 procedure b(ch varchar2)

 is

 begin

  dbms_output.put_line(ch);

 end;


 function c(num number)

 return varchar2

 is

 begin

  if (num>=90) then return 'A';

  elsif (num>=80) then return 'B';

  elsif (num>=70) then return 'C';

  elsif (num >=60) then return 'D';

  else return 'F';

  end if;

 end;


end;

/

-----------------------------------


9. 고객(Customer)정보가 삭제되면 포인트(points)정보도 삭제되도록 points_del_trig를 완성하시오

--(old.id)주의하기

create or replace trigger points_del_trig

after delete on customer

for each row

begin

 delete from points where points.id=(:old.id);

end;

/

'공부 > DataBase' 카테고리의 다른 글

Oracle 포트번호바꾸기  (0) 2017.04.16
Oracle Quiz5  (1) 2017.02.22
Oracle Quiz3  (0) 2017.02.22
Oracle Quiz2  (0) 2017.02.22
Oracle Quiz1  (0) 2017.02.21
Comments