뷰(VIEW)

원본은 있는데 가상으로 테이블을 만드는 것

원본 데이터는 저장소에 따로 있고

뷰는 그 데이터에 대한 링크만 가지고 있다.

뷰 생성

CREATE VIEW 뷰이름 AS SELECT ~ FROM ~ WHERE

예시

CREATE VIEW MY_VIEW AS 

SELECT E.EMPNO, E.JOB, E.SAL, D.DNAME

FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO

AND JOB IN (SELECT JOB FROM EMP WHERE DEPTNO = 10);

 

뷰는 삭제하면 테이블도 삭제 된다.

그래서 뷰를 줄 때 READ ONLY 권한만 줄 수 있다. (SELECT만 가능)

복잡한 쿼리를 조인한 결과를 미리 만들어서 여러가지를 해 볼 수 있게 함 (부하 감소)

보안목적: 회원테이블 같은 민감한 정보가 있는 테이블을 가공해야 할 때

관리나 보안의 목적으로 일부 데이터를 가린 뷰를 사용할 수 있다.

메모리 효율성

 

이미 뷰를 만들었는데 컬럼 추가를 해야 할 경우

CREATE OR REPLACE VIEW MY_VIEW AS

SELECT EMPNO, ENAME, JOB FROM EMP;

 

뷰 삭제

DROP VIEW 뷰이름

 

단순 뷰 : 테이블 하나로 만드는 것.

복합 뷰 : 여러 테이블로 만드는 것.

인라인 뷰 : FROM절에서 참조하는 테이블의 크기가 클 경우, 서브쿼리를 통해 임시적으로 사용할 테이블을 사용하는 것. 임시성 테이블이라서 1회성이다.


시퀀스(SEQUENCE)

내가 번호를 발행하는 순간 번호가 계속 나온다.

시퀀스를 drop하는 순간 다시 1번부터 나온다.

레코드를 구분할 수 있는 무언가를 만들 때 필요

시퀀스 하나로 여러 테이블이 같이 써도 되지만,

현업에서는 테이블 당 한개씩 사용한다.

시퀀스 만들기

CREATE SQUENCE 시퀀스 이름 
STARTWITH 1
INCREMENT BY 1
MINVALUE 1
NOCYCLE;

시퀀스 변경

ALTER SEQUENCE 시퀀스명 
INCREMENT BY 1
MINVALUE 1
NOCYCLE;

근데 START WITH는 변경 불가능

시퀀스는 PK에 사용할 수 있는데,
START WITH를 수정하면 중복되거나 충돌할 수 있어서 그렇다.

시퀀스 삭제

DROP SEQUENCE 시퀀스명

 

시퀀스의 값을 증가시키는 법

SELECT SEQ_BOARD.NEXTVAL FROM 테이블명;

 

현재 시퀀스의 값을 알아내는 법

SELECT SEQ_BOARD.CURRVAL FROM 테이블명;

댓글남기기