ABOUT ME

초보 개발자의 일기장입니다. 배운 것들을 정리하며 복습하는 시간을 갖기 위해 개설했습니다.

Today
Yesterday
Total
  • DATABASE 14장 연습문제
    카테고리 없음 2022. 12. 12. 15:29

    문제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는 불가능 하다.

    데이터를 입력하고 싶으면 뷰가아닌 테이블에 추가해야한다.

     

     

Designed by Tistory.