DATABASE/Oracle

[ORACLE] 시퀀스(SEQUENCE) 생성, 수정, 조회, 사용

잇나우 2020. 2. 6. 22:26
반응형

기본키와 같은 값이 절대 없어서는 안될 데이터들을 값을 추가할때마다 중복되지 않는 값을 찾아 넣는다는건 데이터양이 많으면 많을수록 쉽지 않은 일이 될것이다. 이러한 경우 오라클에서는 시퀀스를 이용하여 값을 자동으로 줄 수 있다.

시퀀스란 자동으로 값을 증가시켜 반환하는 데이터베이스 객체이다. 보통 PRIMARY KEY의 값을 생성하기위해 많이 사용한다. 사용자가 정의한 숫자부터 증감될 값을 정하여 그 값만큼 자동으로 증감한다.

시퀀스(SEQUENCE) 생성

-- 가장 기본적인 문법
CREATE SEQUENCE 시퀀스명
START WITH 시작숫자
INCREMENT BY 증감숫자;

-- 그 외에 속성들
CREATE SEQUENCE 시퀀스명
START WITH 시작숫자
INCREMENT BY 증감숫자

[NOMAXVALUE || MAXVALUE 최대값] -- MAXVALUE는 최대값
[NOMINVALUE || MINVALUE 최소값] -- MINVALUE는 최소값
[CYCLE || NOCYCLE] -- 기본값은 nocycle, cycle 설정시 최대값에 도달 했을때 다시 최소값부터 시작하게 된다.
[CACHE || NOCACHE] -- NOCACHE 설정시 시퀀스의 캐시값을 0이 된다.

NOMAXVALUE : 디폴트 값이며 최대값은 10의 27승이다. 무한이라고 생각하면된다.
NOMINVALUE : 디폴트 값이며 값이 감소일때 -10의 27승까지이다. 무한이라고 생각하면된다.

시퀀스 사용

예시로 먼저 시퀀스를 생성하겠다. 그뒤 테이블에 값을 넣을때 어떻게 시퀀스가 쓰이는지 알아보겟다.

-- 시퀀스 생성 예
CREATE SEQUENCE seq_test
START WITH 1
INCREMENT BY 1
NOCACHE;


-- 시퀀스 사용 예
INSERT INTO test VALUES (seq_test.NEXTVAL, '아무개', '서울');
INSERT INTO test VALUES (seq_test.NEXTVAL, '지우개', '부산');

시퀀스명 뒤에 NEXTVAL이나 CURRVAL이 .다음에 올 수 있다.

NEXTVAL : 현재 시퀀스 값의 다음값을 반환한다. (설정한 증감만큼)
CURRVLA : 현재 시퀀스 값을 반환한다.

시퀀스 수정

ALTER SEQUENCE 시퀀스명
    [INCREMENT BY 증가값]
    [MAXVALUE 최대값]
    [MINVALUE 최소값]
    [CYCLE || NOCYCLE]
    [CACHE || NOCACHE]

수정도 생성과 크게 다르지 않지만 생성할때 시작값을 정해주는 START WITH는 수정할 수 없다.

시퀀스 삭제

DROP SEQUENCE 시퀀스명;

시퀀스 조회

-- 해당 시퀀스 값 조희
SELECT 시퀀스명.CURRVAL FROM DUAL 

-- 전체 시퀀스 조회
SELECT * FROM 시퀀스명 
반응형