데이터베이스 - 객체 연습문제
2021/03/03(수)
6번째 수업
책 13장 연습문제
--문제1. 다음 SQL문을 작성해 보세요.
--1-1) EMP 테이블과 같은 구조의 데이터를 저장하는 EMPIDX 테이블을 만들어 보세요.
--1-2) 생성한 EMPIDX 테이블의 EMPNO열에 IDX_EMPIDX_EMPNO 인덱스를 만들어 보세요.
--1-3)마지막으로 인덱스가 잘 생성되었는지 적절한 데이터 사전 뷰를 통해 확인해 보세요.
--문제2
--1번에서 생성한 EMPIDX 테이블의 데이터 중 급여가 1500 초과인 사원들만 출력하는 EMPIDX_OVER15K 뷰를 생성해 보세요
--이 이름을 가진 뷰가 이미 존재할 경우에 새로운 내용으로 대체 가능해야 합니다.
--EMPIDX_OVER15K 뷰는 사원번호, 사원 이름, 직책, 부서번호, 급여, 추가수당 열을 가지고 있습니다.
--추가 수당 열의 경우에 추가 수당이 존재하면 O, 존재하지 않으면 X로 출력합니다.
--문제3
--다음 세가지 SQL문을 작성해 보세요
--3-1) DEPT 테이블과 같은 열과 행 구성을 가지는 DEPTSEQ테이블을 작성해 보세요
--3-2) 생성한 DEPTSEQ 테이블의 DEPTNO 열에 사용할 시퀀스를 오른쪽 특성에 맞게 생성해 보세요.
--3-3) 마지막으로 생성한 DEPTSEQ를 사용하여 오른쪽과 같이 세 개 부서를 차례대로 추가해 보세요
풀어보기
1-1)
CREATE TABLE EMPIDX AS SELECT * FROM EMP;
1-2)
CREATE INDEX IDX_EMPIDX_EMPNO ON EMPIDX(EMPNO);
1-3)
SELECT * FROM USER_INDEXES WHERE INDEX_NAME = 'IDX_EMPIDX_EMPNO';
2번
CREATE OR REPLACE VIEW EMPIDX_OVER15K
AS
(SELECT EMPNO, ENAME, JOB, DEPTNO, SAL, NVL2(COMM,'O','X') AS COMM
FROM EMPIDX
WHERE SAL > 1500);
SELECT * FROM EMPIDX_OVER15K;
3-1)
CREATE TABLE DEPTSEQ AS
SELECT * FROM DEPT WHERE DEPTNO <> 1;
3-2)
CREATE SEQUENCE SEQ_DEPTSEQ
INCREMENT BY 1
START WITH 1
MAXVALUE 99
MINVALUE 1
NOCYCLE
NOCACHE;
3-3)
INSERT INTO DEPTSEQ VALUES(SEQ_DEPTSEQ.NEXTVAL, 'DATABASE', 'SEOUL');
INSERT INTO DEPTSEQ VALUES(SEQ_DEPTSEQ.NEXTVAL,'WEB', 'BUSAN');
INSERT INTO DEPTSEQ VALUES(SEQ_DEPTSEQ.NEXTVAL,'MOBILE','ILSAN');