1. Sequence

- 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체이다.

/* Sequence 예시 */
SELECT *
FROM USER_SEQUENCES;

 

1.1 CREATE SEQUENCE

/* CREATE SEQUENCE */
CREATE SEQUENCE 시퀀스이름
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
요소 설명
시퀀스 이름 - 생성할 시퀀스 이름을 지정한다.
- 아래 요소들을 지정하지 않을 경우 1부터 시작하여 1만큼 계속 증가하는 시퀀스가 생성된다.
- 필수값이다.
INCREMENT BY - 시퀀스에서 생성할 번호의 증가 값을 지정한다.
- 기본값은 1이다.
START WITH - 시퀀스에서 생성할 번호의 시작 값을 지정한다.
- 기본값은 1이다.
MAXVALUE | NOMAXVALUE - 시퀀스에서 생성할 번호의 최댓값을 지정한다.
- 시작 값(START WITH) 이상, 최솟값(MINVALUE)을 초과하는 값으로 지정해야 한다.
- NOMAXVALUE로 지정하였을 경우 오름차순이면 10^27, 내림차순이면 -1로 설정된다.
MINVALUE | NOMINVALUE - 시퀀스에서 생성할 번호의 최솟값을 지정한다.
- 시작 값(START WITH) 이하, 최댓값(MAXVALUE) 미만인 값으로 지정해야 한다.
- NOMINVALUE로 지정하였을 경우 오름차순이면 1, 내림차순이면 10^-26으로 설정된다.
CYCLE | NOCYCLE - 시퀀스에서 생성한 번호가 MAXVALUE에 도달했을 경우 CYCLE이면 START WITH 값에서 다시 시작된다.
- 시퀀스에서 생성한 번호가 MAXVALUE에 도달했을 경우 NOCYCLE이면 번호 생성이 중단되고, 이때 추가 번호 생성을 요청하면 오류가 발생된다.
CACHE | NOCACHE - 시퀀스가 생성할 번호를 메모리에 미리 할당해 놓은 수를 지정한다.
- NOCACHE는 미리 생성하지 않도록 설정한다.
- 생략하면 기본값은 20으로 설정된다.

- CREATE문으로 시퀀스를 생성할 수 있다.

/* CREATE SEQUENCE 예시 */
CREATE SEQUENCE SEQ_DEPT_SEQUENCE
INCREMENT BY 10
START WITH 10
MAXVALUE 90
MINVALUE 0
NOCYCLE
CACHE 2;

 

1.2 SEQUENCE 사용

종류 설명
NEXTVAL 다음 번호를 생성한다.
CURRVAL - 시퀀스에서 마지막으로 생성한 번호를 반환한다.
- 시퀀스를 생성하고 바로 사용하면 번호가 만들어진 적이 없으므로 오류가 난다.
/* NEXTVAL 예시 */
INSERT INTO DEPT_SEQUENCE (DEPTNO, DNAME, LOC)
VALUES (SEQ_DEPT_SEQUENCE.NEXTVAL, 'DATABASE', 'SEOUL');

/* CURRVAL 예시 */
SELECT SEQ_DEPT_SEQUENCE.CURRVAL
FROM DUAL;

 

1.3 ALTER SEQUENCE

/* ALTER SEQUENCE */
ALTER SEQUENCE 시퀀스이름
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];

- ALTER 명령어로 시퀀스를 수정할 수 있다.

- 옵션을 재설정할 수 있으나, START WITH 값은 변경할 수 없다.

/* ALTER SEQUENCE 예시 */
ALTER SEQUENCE SEQ_DEPT_SEQUENCE
INCREMENT BY 3
MAXVALUE 99
CYCLE;

 

1.4 DROP SEQUENCE

- DROP 명령어로 시퀀스를 삭제한다.

- 시퀀스를 삭제해도 시퀀스를 사용하여 추가된 데이터는 삭제되지 않는다.

/* DROP SEQUENCE 예시 */
DROP SEQUENCE SEQ_DEPT_SEQUENCE;

 

참고

- 『오라클로 배우는 데이터베이스 입문』

'Database' 카테고리의 다른 글

Constraint  (0) 2021.11.01
Synonym  (0) 2021.10.28
View  (0) 2021.10.28
Index  (0) 2021.10.26
Data Dictionary  (0) 2021.10.26