DATABASE 14장 연습문제
문제1] 뷰와 테이블의 공통점과 차이점을 설명하시오.
공통점 : 저장된 데이터를 검색 및 수정이 가능하다
차이점 : 테이블은 실질적인 데이터가 존재하지만, 뷰는 데이터가 없고 SQL문만 저장한다
문제2] 뷰를 사용하는 목적을 크게 두가지로 요약하여 설명하시오.
데이터를 보호하기 위한 보안(security)와 사용자의 편의성(flexibility)
문제3] 학생 테이블에서 학생 이름과 전화번호로 구성되는 뷰(v_stud_addr)를 정의하시오.
SQL> desc v_stud_addr; 출력결과
이름 널 유형
---- -------- ------------
NAME NOT NULL VARCHAR2(15)
TEL VARCHAR2(13)
CREATE VIEW v_stud_addr
AS SELECT name, tel
from student;
desc v_stud_addr;
문제4] v_stud_addr뷰에 다음 데이터를 입력한 후 student테이블과 v_stud_addr뷰에서
데이터를 각각 검색하시오.(성춘향. 02)111-1111을 입력하고, 에러가 나오는 이유를 쓰시오)
SQL> insert into v_stud_addr(name, tel) values('성춘향','02)111-1111');
SELECT 만 가능하고 INSERT, UPDATE, DELETE는 불가능 하다.
데이터를 입력하고 싶으면 뷰가아닌 테이블에 추가해야한다.
문제5] 학생 이름과 학생이 소속한 학과 이름으로 구성된 뷰(v_stud_dept)를 정의하시오.
(뷰의 칼럼이름 : 학생이름, 학과이름)
CREATE VIEW v_stud_dept(학생이름, 학과이름)
AS Select s.name, d.dname
from student s, department d
where s.deptno = d.deptno;
select * from v_stud_dept;
문제6] 101번 학과 학생들의 학생 이름과 지도교수 이름을
가진 뷰(v_stud_prof)를 정의하시오.
아직 지도교수가 정해지지 않은 학생도 함께 출력하시오.
CREATE VIEW v_stud_prof(학생이름, 지도교수이름)
AS SELECT s.name, p.name
from student s, professor p
where s.profno = p.profno(+);
select * from v_stud_prof;
문제7] 각 학과에 소속되어 있는 교수이름과 학생이름으로 구성되는 뷰(v_all1)을 생성하시오
뷰의 칼럼이름은 학과이름, 학생이름, 교수이름으로 하시오.
아직 지도교수가 정해지지 않은 학생도 출력하시오
CREATE VIEW v_all1(학과이름, 학생이름, 교수이름)
as select d.dname, s.name, p.name
from student s, department d, professor p
where s.profno = p.profno(+)
and d.deptno = s.deptno;
select * from v_all1;
문제8] 학과별 평균 몸무게와 평균 키 정보를 가지는 뷰(v_dept_avg)를 생성하시오.
(단, 키와 몸무게는 소수미만 2자리 까지만 올림하여 표시하시오)
CREATE VIEW v_dept_avg(학과, 평균몸무게, 평균키)
AS SELECT deptno, round(avg(weight), 2)평균몸무게, round(avg(height),2) 평균키
from student
group by deptno;
select * from v_dept_avg;
문제9] 8번에서 생성한 'v_dept_avg'에 아래와 같이 데이터를 입력하여 실행 결과를 확인하고
오류나는 이유를 설명하시오.
SQL> insert into v_dept_avg values(202,60,169);
SELECT 만 가능하고 INSERT, UPDATE, DELETE는 불가능 하다.
데이터를 입력하고 싶으면 뷰가아닌 테이블에 추가해야한다.