IT 관련,,/데이터베이스(sql)

[Database/SQL]오라클 뷰와 시퀀스 사용하기~

IT깡패's 2018. 8. 23. 22:25
728x90
반응형
SMALL

 

물리적인 테이블에 근거한 논리적인 가상의 테이블

데이터가 없고 테이블의 대한 SQL만 저장되어 있다.

사용자가 VIEW에 접근할 경우 SQL이 수행되면서 그 결과를 가져온다.

여러 테이블에 대한 검색결과를 뷰 하나로 검색할 수 있다.

복잡하고 긴 쿼리문을 뷰로 정의하면 접근을 단순화할 수 있다.

 

뷰 문법

 

CREATE [ OR REPLACE][ FORCE | NOFORCE ] VIEW view_name
AS subquery
[ WITH CHECK OPTION [CONSTRAINT 제약조건]]
[ WITH READ ONLY ]

 

- CREATE : 뷰 생성

- CREATE OR REPLACE : 뷰를 생성하지만 같은 이름의 뷰가 있으면 질의가 변경된다

- FORCE : 기본 테이블 유무에 관계없이 뷰를 생성

- WITH CHECK OPTION : 제약조건에 맞는 데이터만 입력되거나 변경될 수 있다

- WITH READ ONLY : SELECT만 가능한 뷰 생성

 

뷰 정보 조회

USER_VIEWS 를 통해 뷰에 대한 정보를 조회 할 수 있다.

 

 

SELECT view_name, text
FROM user_view
WHERE view_name = '뷰이름';

 

 

시퀀스

테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생 객체

행을 구분하기 위한 고유값으로 기본키를 사용한다. 기본키는 중복되지 않은 유일한 값을 가져야 하는데 직접 값을 생성해내는 것이 사용자의 부담이

될 수 있다. 이럴 경우 시퀀스를 이용해 기본키로 지정을 한다.

그리고 시퀀스는 오라클에서 사용할 때, 아무값도 지정하지 않으면 2번째 숫자값부터 시작된다. 

 

시퀀스 생성

 

CREATE SEQUENCE sequence_name
[ START WITH  n]
[ INCREMENT BY n ]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ]
[ CYCLE | NOCYCLE ]
[ CACHE | NOCYCLE ]

 

- START WITH : 시퀀스 시작 값

- INCREMENT BY : 시퀀스 증가 값

- MAXVALUE : 시퀀스 최대 값

- MINVALUE : 시퀀스 최소 값

- CYCLE : 최대값 도달 시 순환 여부

- CACHE : cache 여부, 원하는 숫자만큼 미리 만들어 캐시로 상주시킨다

 

시퀀스 활용 

- 시퀀스 생성 및 확인

 

CREATE SEQUENCE seq_empno
START WITH 1000
INCREMENT BY 1
CACHE 20;
SELECT seq_empno.NEXTVAL FROM dual;
SELECT seq_empno.NEXTVAL FROM dual;
SELECT seq_empno.NEXTVAL FROM dual;
1000
1001
1002

 

 

- insert문에서 스퀀스 사용

 

INSERT INTO emp (empno, ename)
VALUES (seq_empno.nextval, 'TEST');
SELECT empno, ename FROM emp WHERE ename = 'TEST';
EMPNO       ENAME
------       -------
1004           TEST

 

 

시퀀스 수정

START WITH 값을 제외한 다른 설정들을 수정할 수 있다.

 

ALTER SEQUENCE sequence_name
[ INCREMENT BY n ]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE]
[ CYCLE | NOCYCLE ]
[ CACHE | NOCACHE ]

 

 

- 시퀀스 수정 예시

 

ALTER SEQUENCE seq_empno
INCREMENT BY 10
CACHE 40;
SELECT seq_empno.NEXTVAL FROM dual;
SELECT seq_empno.NEXTVAL FROM dual;
SELECT seq_empno.NEXTVAL FROM dual;
1010
1024
1034

 

 

시퀀스 삭제 

DROP SEQUENCE 문으로 시퀀스를 삭제한다.

 

 

DROP SEQUENCE seq_empno;

 

이상으로 오라클에서 가상 뷰와 시퀀스를 사용하는 것에 대해서 공부해봤는데~ㅎㅎ

오라클에서 가상 뷰를 쓸 때는, 오라클 쿼리를 테스트하기 위해 많이 사용한다.

그리고 시퀀스는 오라클에서 테이블을 만들 때, 거의 필수적으로 사용하게 된다.

시퀀스를 사용하면 DB값이 중복되는 것을 없애주며 별도로 값을 관리하지 않아도 DB에서 알아서 관리하게 해준다.

728x90
반응형
LIST