본문 바로가기

국비

11.23 국비학원 35일차 (문제풀이, SEQUENCE 객체, VIEW 객체)

~문제풀이 이어서~

 

15. 사내 공지를 위한 게시판 기능을 추가하기. 다음의 요구사항에 맞추어 테이블을 생성하고 첫번째 공지를 작성해라.

      (첫번째 공지는 모든 부서가 열람할 수 있게 한다.)
         - 공지 게시판은 부서별 공지와 전체 공지로 나누어져 운영되어야 한다.
         - 전체 공지는 모든 부서가 확인할 수 있는 공지이며 부서별 공지는 지정한 부서에 소속된 사원만 볼 수 있는 공지다
         - 공지를 작성할 때 다음의 정보가 저장되어야 한다.
                * 번호, 제목, 내용, 작성일자, 부서ID

 

16. 사내 공지 게시판 테이블을 생성 후에 다음의 공지를 추가로 작성한다.
        - 모든 부서마다 'xxx 부서만 확인할 수 있는 공지 입니다.' 라는 메시지를 추가한다.

 

17. 100 번 사원이 공지를 열람한다는 가정하에 100 번 사원이 소속된 부서의 공지와 전체 공지가 보일수 있는 SELECT

      쿼리문을 작성하세요.

 

18. 공지 게시판에 중요도 기능을 추가하여 가장 중요한 공지가 가장 먼저 조회될 수 있도록 테이블을 수정하도록 한다.
        - 중요도는 1 ~ 5 까지 사용할 수 있게 한다.
        - 중요도를 설정하지 않으면 기본 3으로 저장되게 한다.
        - 전체 공지용으로 중요도 1 ~ 5 까지 총 5개의 공지 데이터를 추가한다.
        - 추가한 공지 데이터를 조회할 때 중요도 순으로 조회가 될 수 있도록 SELECT 구문을 작성한다.

 

  • SEQUENCE 객체

         - 번호 발생기 객체

         - 정수값을 순차적으로 생성하는 객체

         - PRIMARY KEY 로 사용하는 번호(ID) 등에 사용하여 정수값을 생성하기 위한 용도로 많이 사용

 

         - NEXTVAL : 다음 번호 생성

         - CURRVAL : 현재 번호

         - START WITH n : 시작 값 설정

         - INCREMENT BY n : NEXTVAL 하면 n 씩 증가

         - MAXVALUE : NEXTVAL 의 최대값. CYCLE 설정 없이 그 이상 증가시키려면 오류 발생

         - MINVALUE : CYCLE 설정 시 최대값 넘어간 이후 나오는 첫 값

         - CYCLE : 순환. MINVALUE 값 설정이 안되어 있다면 MAXVALUE 이후 처음 기본 값은 1 이다.

         - NOCACHE : 메모리 관련

 

       <NEXTVAL, CURRVAL 을 사용할 수 있는 명령어>

           1. SELECT 문 (서브쿼리 제외)

           2. INSERT 문의 VALUES 절

           3. INSERT 문의 SELECT

           4. UPDATE 문의 SET 절

 

       <NEXTVAL, CURRVAL 을 사용할 수 없는 명령어>

           1. VIEW 의 SELECT 문

           2. DISTINCT 키워드가 있는 SELECT 문

           3. GROUP BY, HAVING, ORDER BY 절이 있는 SELECT

           4. SELECT, DELETE, UPDATE 의 서브쿼리

           5. DEFAULT 값

  • VIEW 객체

         - SELECT 문의 실행 결과를 저장한 가상 테이블

         - 테이블과 다르게 실제 데이터를 저장하고 있지는 않으나 실제 테이블을 사용하는 것과 동일하게 사용 가능

         - 복잡한 SELECT 구문을 VIEW 로 만들어 간단하게 사용하기 위해 주로 사용

         - WITH READ ONLY : 이 옵션 추가하면 VIEW를 읽기 전용으로만 쓸 수 있다. INSERT,UPDATE,DELETE 작업 불가

         - WITH CHECK OPTION : WHERE 절과 함께 사용해야 한다. WHERE 절에 해당하는 범위인지 확인 제한을 건다.

 

        <VIEW 를 사용하여 INSERT, UPDATE, DELETE 작업을 할 수 없는 경우>

           1. VIEW 에 포함되지 않은 컬럼을 사용하는 경우

           2. VIEW 에 포함되지 않은 컬럼 중 NOT NULL 제약 조건이 있는 경우

           3. 산술 표현식으로 정의된 경우

           4. 그룹함수나 GROUP BY 절이 포함된 경우

           5. DISTINCT 키워드가 있는 경우

           6. JOIN 을 사용하여 여러 테이블이 결합된 경우