SQL 시퀀스
시퀀스 : 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기
시퀀스를 기본 키로 사용하게 되면 사용자의 부담을 줄일 수 있다.
보통 INSERT 연산과 같이 사용되어 컬럼 값을 자동으로 발생시키는 용도로 사용된다.
시퀀스 기본 형식
REATE SEQUENCE sequence_name
[START WITH n] ①
[INCREMENT BY n] ②
[{MAXVALUE n | NOMAXVALUE}] ③
[{MINVALUE n | NOMINVALUE}] ④
[{CYCLE | NOCYCLE}] ⑤
[{CACHE n | NOCACHE}] ⑥
CREATE SEQUENCE EX_SEQ --시퀀스이름 EX_SEQ
INCREMENT BY 1 --증감숫자 1
START WITH 1 --시작숫자 1
MINVALUE 1 --최소값 1
MAXVALUE 1000 --최대값 1000
NOCYCLE --순환하지않음
CACHE; --메모리에 시퀀스값 미리할당
① START WITH : 시퀀스 번호의 시작값을 지정
② INCREMENT BY : 연속적인 시퀀스 번호의 증가치를 지정
③ MAXVALUE n : 시퀀스가 가질 수 있는 최대값
NOMAXVALUE : 디폴트값 설정. 증가일때 10^27, 감소일때 -1
④ MINVALUE n : 시퀀스가 가질수 있는 최소값
NOMINVALUE : 디폴트값 설정. 증가일때 1, 감소일때 -10^28
⑤ CYCLE : 지정된 시퀀스 값이 최대값까지 도달하면 다시 START WITH에서 시작값부터 시작
NOCYCLE : 최대값 도달 시 시퀀스 생성중지
⑥ CACHE n : 메모리상의 시퀀스 값을 미리 할당(기본값으로 20개씩)
속도를 증가시키기 위해 원하는 숫자 만큼 미리 만들어 Shared Pool의 Library Cache에 상주 시키는 기능
NOCACHE : 시퀀스값을 메모리에 할당하지 않음
시퀀스 딕셔너리 확인
DESC USER_SEQUENCES
시퀀스 객체 생성
CREATE SEQUENCE 시퀀스명
INCREMENT BY 증감 숫자
START WITH 시작숫자;
CREATE SEQUENCE DEPT_DEPTNO_SEQ
INCREMENT BY 10
START WITH 10;
=>10부터 시작해서 10씩 증가하는 시퀀스
시퀀스 제거
DROP SEQUENCE 시퀀스명;
시퀀스 수정
START WITH만 빼고 생성 구조와 동일하다.
ALTER SEQUENCE 시퀀스명
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
CURRVAL, NEXTVAL
CURRVAL : 현재 값을 반환
SELECT DEPT_DEPTNO_SEQ.CURRVAL FROM DUAL;
NEXTVAL : 현재 시퀀스 값의 다음 값을 반환
SELECT DEPT_DEPTNO_SEQ.NEXTVAL FROM DUAL;
CURRVAL에 새로운 값이 할당되기 위해서는 NEXTVAL로 새로운 값을 생성해야 합니다.
(NEXTVAL로 새로운 값을 생성하면 그 값이 CURRVAL가 됨.)
서브쿼리에서는 사용X