오라클 시퀀스(Sequence) 생성 및 조회, 삭제 방법

오라클 시퀀스(Sequence) 생성 및 조회, 삭제 방법

오라클에서 게시물이나 고유한값을 가질 때 시퀀스값을 가지고 사용하는데요.
필요에 따라 키값의 MAX +1로 사용하는 경우도 있습니다.
하지만 해당 페이지의 조회가 많은 경우 MAX +1로 시퀀스를 대신한다면 중복키발생이나 동일한값이 생성될 가능성이 있어 권장하지는 않는데요.

시퀀스를 생성하는 방법 과 조회하는 방법을 알아보겠습니다.

오라클 시퀀스(Sequence) 생성 및 조회



1. 시퀀스 생성
먼저 시퀀스를 생성해보겠습니다.

설명중 아래와 같이 되어 있는 부분은 참고하세요

[범례]
대문자 : 오라클 예약어
소문자 : 사용자기 입력하는 부분
[] : 생략가능

1
2
3
4
5
6
7
8
9
CREATE SEQUENCE sequence_name
[INCREMENT BY n] : 시퀀스 번호의 증가치 
[START WITH n] : 시퀀스 시작 번호지정 
[MAXVALUE n | NOMAXVALUE] : 생성될 수 있는 최대값. 
[MINVALUE n | NOMINVALUE] : 생성될 수 있는 최소값. 
[CYCLE | NOCYCLE] : MAXVALUE OR MINVALUE에 도달 후 순환적으로 시퀀스를 생성할것인지 여부 
[CACHE n | NOCACHE] : 메모리에 캐쉬할 시퀀스 개수 지정.
[NOORDER | ORDER] : 순서 보장 필요여부
 
cs

 

 시퀀스 생성


 

sequence_name : 은 테이블명 처럼 시퀀스명을 입력합니다.
일반적으로 시퀀스명은 테이블명_적용할컬럼명_SEQ 이렇게 적용하는것이 일반적입니다.
그래야 어떤 테이블에 어떤 컬럼에 시퀀시를 적용한건지 한번에 확인할 수 있습니다.

[INCREMENT BY n] : [] 로 되어 있기 때문에 생략가능하며
시퀀스 번호의 증가값입니다. n에 사용자가 입력할 숫자값이 들어가는데요
1을 입력하면 1씩 증가하고 2를 입력하면 2씩 증가됩니다.
생략할 경우 1씩 증가 됩니다.


[START WITH n] : 생략가능하며 시작번호를 정의합니다.
생략되면 1부터 지정되며 n 값에 100을 입력하면 100부터 100, 101, 102... 로 증가됩니다.

[MAXVALUE n ]  : 시퀀스가 생성할 수 있는 최대값입니다.

[NOMAXVALUE]  : 오른차순이면 최대 10의 27승까지 내림차순인경우 -1까지 생성됩니다.


[MINVALUE n] :  시퀀스가 생성할 수 있는 있는 최소값입니다.

[NOMINVALUE] : 오름차순이면 1, 내림차순인경우 -10의 26승까지 생성됩니다.

[CYCLE ] : MAXVALUE OR MINVALUE에 도달 후 순환적으로 시퀀스를 생성합니다.
[NOCYCLE] : MAXVALUE OR MINVALUE에 도달 해도 생성되지 않습니다.

[CACHE n ] : n 에 지정된 수만큼 시퀀스를 메모리에 할당합니다.
[NOCACHE] :  시퀀스를 메모리에 할당하지 않고 사용합니다.


[NOORDER] : db서버가 여러대로 묶인경우 시퀀스 생성 순서를 유니크하게만 발생합니다.
           장점은 db 부하가 작습니다. 단점은 메모리에 생성된 시퀀스값이 순서대로 생성되지 않을 수 있습니다.  1,2,3,6,4,5 이렇게 생성될 수 있습니다.
[ORDER] : 순서 보장 필요 시 사용됩니다.  

장점은 순서가 반드시 1,2,3,4,5 로 오름차순으로 생성됩니다.
단점은 db에 부하가 걸릴 수 있습니다.


 

이제 예제를 통해서 사용 방법을 알아보겠습니다.

시퀀스명을 test_seq로 생성했으며, 시작번호는 1, 증가값도1로 되는 일반적인 시퀀스 입니다
최대값은 9999 설정되서 9999까지 시퀀스값이 증가되면 종료됩니다.

 

1
2
3
4
5
6
7
8
CREATE SEQUENCE test_seq
 INCREMENT BY 1
 START WITH 1
 MAXVALUE 9999  
 NOCYCLE 
 CACHE 10  
 ORDER;
 
cs

 


 

2씩 증가하는 시퀀스 입니다.   

1
2
3
4
5
6
7
CREATE SEQUENCE test_seq_2
 INCREMENT BY 2
 START WITH 1
 MAXVALUE 9999
 NOCYCLE
 CACHE 10
 ORDER;
cs

1,3,5,7,9... 이렇게 증가됩니다.


 

내림차순으로 숫자가 감소하는 시퀀스 입니다.
INCREMENT 값을 -1로 주고 MAX,MIN 값을 설정하였습니다.
99,98,97...로 감소됩니다.

1
2
3
4
5
6
7
8
9
10
CREATE SEQUENCE test_seq_3
 INCREMENT BY -1
 START WITH 100
 MAXVALUE 100
 MINVALUE 0
 NOCYCLE
 CACHE 10
 ORDER;
 
 
cs

 

2. 시퀀스 조회

생성한 시퀀스를 실행해보겠습니다.  조회 방법은 시퀀스명.NEXTVAL을 하시면 시퀀스 번호가 증가되면서 조회됩니다.
조회시마다 시퀀스 값이 증가 됩니다.

1
SELECT test_seq.NEXTVAL FROM DUAL;
cs

 

시퀀스 조회


 

현재 시퀀스 번호를 조회하는 방법입니다.

1
SELECT test_seq.CURRVAL FROM DUAL;
cs

현재 시퀀스값이 조회되며 계속 조회되도 시퀀스 값이 증가되지 않습니다.

현재 시퀀스 번호를 조회


 

현재 생성된 모든 시퀀스를 조회해보겠습니다.

1
SELECT * FROM USER_SEQUENCES
cs

실행하면 생성된 모든 시퀀스가 조회되며 지정한 설정값이 함께 조회 됩니다.

현재 생성된 모든 시퀀스를 조회


 

3. 시퀀스 삭제

테이블 삭제 방법과 유사합니다.

DROP SEQUENCE 시퀀스명 을 사용하시면 됩니다.

사용 방법은

1
2
3
 
 
DROP SEQUENCE test_seq_3 
cs

이렇게 하시면 삭제 됩니다.

시퀀스 삭제

이상 오라클 시퀀스(Sequence) 생성 및 조회, 삭제 방법을 알아보았습니다.