뷰(view) & 시퀀스

뷰(view)

 1) 가상테이블 (기존의 테이블을 참조)

 2) 메모리에 데이터를 저장하지 않는다(보안)

​ 3) View=>SQL문장을 저장하고 있다

 4) 자바에서 코딩을 줄일 수 있다

 5) 뷰의 종류

    1. 단순 뷰: 테이블 한 개에서 연결

    2. 복합 뷰: 테이블 여러 개 이상이 연결

    3. 인라인 뷰(페이징)

6) 사용법

    1.   CREATE VIEW view_name

         AS (SELECT~)

    2.   CREATE VIEW view_name

         AS (SELECT~ JOIN)

    3. SELECT ~ FROM (SELECT~)

       ★(탑앤TOP-N 이라고도 한다. 위에서부터 n개 가져옴) (앤앤N-N이라고도 한다. 어디서부터 어디까지 가져옴)

7) 수정

    CREATE OR REPLACE VIEW view_name ~

8) 삭제

    DROP VIEW view_name

9) 옵션

    WITH CHECK OPTION(디폴트 값임): 수정/삭제(테이블에 영향을 미치므로 주의)

    WITH READ ONLY: 읽기 전용 ★말 그대로 뷰는 보는 용도로 쓰기 때문에, 리드 온리를 해주는 경우가 많다.

 


뷰란 가상의 테이블을 말한다. 메모리에 저장되지 않는다(테이블과 다르다. 뷰에는 데이터가 들어있지 않다. SQL만 저장되어 있다).

뷰의 사용목적은 사용자의 편의성이다. 여러 테이블을 조인하는 효과를 갖는다(미리 조인을 만들어놓는 효과).

메모리에 저장하지 않기 때문에 보안성이 높다.


뷰는 3가지가 있다.
단순 뷰, 복합 뷰, 인라인 뷰


1. 단순 뷰
1개의 테이블로 만들어지는 단순뷰.
(옵션)
WITH CHECK OPTION : 주어진 제약조건에 맞는 데이터만 입력/수정 허용
 – CREATE와 REPLACE를 쓰며 간다(alter가 없으니 replace를 씀)
WITH READ ONLY: 읽기 전용뷰
 – SELECT만 가능
 

​–ex)

–1. 단순뷰 만들기

CREATE VIEW dept_view AS (SELECT * FROM dept);

단순뷰 조회

SELECT * FROM dept_view;

단순뷰 인서트

INSERT INTO dept_view VALUES(50,영업부,서울);

COMMIT;

–★뷰는 테이블을 참조하고 있을 뿐이지만, 단순뷰의 경우 INSERT가 가능하므로, 테이블에 영향을 준다.(테이블 인서트나 다름없다)

삭제

DROP VIEW dept_view;

–2. 단순뷰 만들기(읽기전용)

CREATE VIEW dept_view AS (SELECT * FROM dept) WITH READ ONLY;

–★인서트를 실행하면, “읽기 전용 뷰에서는 DML작업을 수행할 수 없습니다라 나온다.

  

2. 복합 뷰

여러개가 묶이는 뷰

​–ex)

–CREATE OR REPLACE뷰를 만들자(알터대신에 쓴다)

CREATE OR REPLACE VIEW emp_dept_grade

AS (SELECT empno,ename,job,hiredate,sal,dname,loc,grade

    FROM emp,dept,salgrade

    WHERE emp.deptno=dept.deptno

    AND sal BETWEEN losal AND hisal);

–★조인이 많이 걸리면 너무 길어지기 때문에, 뷰에 SQL문을 저장해두는 것이다.

 

SELECT * from emp_dept_grade;

셀렉트 별표로 뷰를 불러오면, 아주 긴 SQL문을 치는 것과 동일한 효과가 난다.

 

3. 인라인 뷰
From 다음에 Select를 써서 임시로 쓰는, 서브쿼리에 해당되는 뷰 (1회용 뷰)

​–ex)

인라인뷰(TOP-N)

SELECT empno,ename,sal,num FROM

(SELECT empno,ename,sal,rownum AS num FROM

(SELECT empno,ename,sal FROM emp ORDER BY sal DESC)) WHERE num BETWEEN 3 AND 5; 

 

—————————————————————————————————————————

시퀀스

CREATE SEQUENCE seq_jumun_no

    INCREMENT BY 1    (증가.  INCREMENT BY -1 하면 감소가 된다)

    START WITH 1000     (시작점)

    MAXVALUE 1010      (MAXVALUE, MINVALUE 지정하지 않을시 무한대로 감)

    MINVALUE 990        

    CYCLE                   (범위가 MAX를 넘어가면 순환되게 만든다. 보통 NOCYCLE로 씀(기본값). 보통 프라이머리키이기 때문임.)

    CACHE 2;               (미리 20개 정도 저장하고 들어감)

조회: CURRVAL로 조회하면 현재값, NEXTVAL을 사용하며여 조회하면 다음값(=MAX+1)