오라클 시퀀스(Sequence) 생성 및 조회, 삭제 방법
오라클에서 게시물이나 고유한값을 가질 때 시퀀스값을 가지고 사용하는데요.
필요에 따라 키값의 MAX +1로 사용하는 경우도 있습니다.
하지만 해당 페이지의 조회가 많은 경우 MAX +1로 시퀀스를 대신한다면 중복키발생이나 동일한값이 생성될 가능성이 있어 권장하지는 않는데요.
시퀀스를 생성하는 방법 과 조회하는 방법을 알아보겠습니다.
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) 생성 및 조회, 삭제 방법을 알아보았습니다.