본문 바로가기
연습 문제

예제 따라가며 쉽게 배우는 오라클 연습 문제 p.344 ~ 345 (수정중)

by 알기 쉬운 코딩 사전 2023. 1. 6.
반응형

연습문제 sql은 모두 제가 직접 작성한 것이므로 오타, 오답이 존재할 수 있습니다.

궁금하신 점이 추가로 있을 시에는 문의하시면 최대한 답변드리겠습니다.

 

1. EMPEX 이름으로 아래의 테이블을 생성하여라.

 

[답]

create table EMPEX
(EMPNO number(4) CONSTRAINT empx_empno_pk primary key,
ENAME varchar2(20),
JOB varchar2(20));

 

2. EMPEX 테이블에 데이터가 입력될 때마다 화면에 "신입 사원이 입사했습니다."라는 메시지가 출력되게 트리거 EMPEX_TRIGGER_INS를 생성하여라.

 

[답]

dms_output.put_line의 결과를 화면에 나타나게 하기 위한 환경변수입니다.
set serveroutput on

create or replace trigger empex_trigger_ins
after insert on empex
begin
	dbms_output.put_line('신입사원이 입사했습니다.');
end;
/

 

3. EMPEX 테이블에 데이터 (1, 홍길동, 판매)를 입력하고 트리거가 수행된 것을 확인하여라.

 

[답]

insert into empex
values(1, '홍길동', '판매');

 

 

4. EMPSAL 이름으로 아래의 테이블을 생성하여라.

 

[답]

create table empsal
(salno number(4) CONSTRAINT empsal_salno_pk primary key,
sal number(7, 2),
empno number(4) constraint empsal_empno_fk references empex(empno));

 

5. EMPEX 테이블에 새로운 데이터를 추가하면 EMPSAL 테이블에 자동적으로 데이터를 추가하는 트리거 EMPSAL_TRIGGER_INS를 생성하여라.(SALNO는 1부터 1씩 자동으로 증가하도록 시퀀스를 사용하고, SAL은 기본값 1000을 입력한다.)

 

[답]

create or replace trigger empsal_trigger_ins
after insert on empex
for each row
begin
insert into empsal
values(empsal_salno_seq.nextval, 1000, :new.empno);
end;
/

 

6. EMPEX 테이블에 데이터(111, 이순신, 군인)를 입력하여라.

 

[답]

insert into empex
values(111, '이순신', '군인');

 

7. 트리거 EMPSAL_TRIGGER_INS이 수행된 것을 확인하기 위해 EMPEX 테이블과 EMPSAL 테이블의 데이터를 조회하여라.

 

[답]

EMPEX 테이블의 데이터 조회
select *
from empex;

EMPSAL 테이블의 데이터 조회
select *
from empsal;

 

8. EMPEX 테이블에 데이터(222, 김민수, 학생)를 입력하여라.

 

[답]

insert into empex
values(222, '김민수', '학생');

 

9. 트리거 EMPSAL_TRIGGER_INS이 수행된 것을 확인하기 위해 EMPEX 테이블과 EMPSAL 테이블의 데이터를 조회하여라.

 

[답]

EMPEX 테이블의 데이터 조회
select *
from empex;

EMPSAL 테이블의 데이터 조회
select *
from empsal;

 

10. EMPEX 테이블의 데이터가 삭제될 때마다 EMPSAL 테이블에서도 해당하는 데이터가 함께 삭제되게 하는 트리거 EMPSAL_TRIGGER_DEL를 생성하여라.

 

[답]

수정요망

create or replace trigger empsal_trigger_ins
after delete on empex
for each row
begin
    if deleting then
    DELETE FROM EMPSAL WHERE EMPNO = (SELECT EMPNO
    								FROM EMPEX);
	end if;
end;
/

 

11. EMPEX 테이블로부터 EMPNO = 111인 데이터를 삭제하여라.

 

[답]

delete from empex
where empno = 111;

 

12. 트리거 EMPSAL_TRIGGER_DEL이 수행된 것을 확인하기 위해 EMPEX 테이블과 EMPSAL 테이블의 데이터를 조회하여라.

 

[답]

EMPEX 테이블의 데이터 조회
select *
from empex;

EMPSAL 테이블의 데이터 조회
select *
from empsal;

 

13. EMPEX 테이블로부터 EMPNO = 222인 데이터를 삭제하여라.

 

[답]

delete from empex
where empno = 222;

 

14. 트리거 EMPSAL_TRIGGER_DEL이 수행된 것을 확인하기 위해 EMPEX 테이블과 EMPSAL 테이블의 데이터를 조회하여라.

 

[답]

EMPEX 테이블의 데이터 조회
select *
from empex;

EMPSAL 테이블의 데이터 조회
select *
from empsal;

 

궁금한 점이 있을 시 덧글 주시면 최대한 답글 드리겠습니다.

반응형

댓글