[Oracle] 시퀀스

배세훈·2022년 2월 7일
0

DB

목록 보기
14/19

시퀀스(Sequence)란?

  • 시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체 입니다.
  • 보통 PK값에 중복값을 방지하기 위해 사용합니다.

시퀀스(Sequence) 생성

-- 문법
CREATE SEQUENCE [시퀀스명]
INCREMENT BY [증감숫자] -- 증가숫자가 양수면 증가 음수면 감소 디폴트는 1
START WITH [시작숫자] -- 시작숫자의 디폴트값은 증가일때: MINVALUE 감소일때: MAXVALUE
NOMINVALUE OR MINVALUE [최솟값]  -- NOMINVALUE: 디폴트값 설정, 증가일 때 1, 감소일 때 -1028
								-- MINVALUE: 최소값 설정, 시작숫자와 작거나 같아야 하고 MAXVALUE보다 작아야함
NOMAXVALUE OR MAXVALUE [최대값] -- NOMAXVALUE: 디폴트값 설정, 증가일 때 1027, 감소일 때 -1
								-- MAXVALUE: 최대값 설정, 시작숫자와 같거나 커야하고 MINVALUE 보다 커야함
CYCLE OR NOCYCLE -- CYCLE 설정시 최대값에 도달하면 최소값 부터 다시시작, NOCYCLE 설정시 최대값 생성 시 시퀀스 생성중지
CACHE OR NOCACHE -- CACHE 설정시 메모리에 시퀀스 값을 미리 할당하고 NOCACHE 설정시 시퀀스값을 메모리에 할당하지 않음

예제

CREATE SEQUENCE EX_SEQ -- 시퀀스 이름 EX_SEQ
INCREMENT BY 1 -- 증감숫자 1
START WITH 1 -- 시작숫자 1
MINVALUE 1 -- 최소값 1
MAXVALUE 1000 -- 최대값 1000
NOCYCLE -- 순환 X
CACHE; -- 메모리에 시퀀스값 미리 할당
  • 1부터 시작해 1씩 증가하며 시작값은 1부터 1000까지 순번을 자동하는 EX_SEQ라는 시퀀스 생성

시퀀스 사용 예시

  • EX_TABLE 생성
    CREATE TABLE EX_TABLE (BOARD_NUM NUMBER NOT NULL)

  • 시퀀스를 이용한 INSERT

INSERT INTO EX_TABLE(BOARD_NUM) VALUES(EX_SEQ.NEXTVAL);
INSERT INTO EX_TABLE(BOARD_NUM) VALUES(EX_SEQ.NEXTVAL);
  • 결과
BOARD_NUM
1
2

시퀀스 조회

SELECT EX_SEQ.CURRVAL FFROM DUAL; -- 해당 시퀀스 값 조회
SELECT * FROM USER_SEQUENCES -- 전체 시퀀스 조회

시퀀스 수정

-- 문법
ALTER SEQUENCE [시퀀스명]
INCREMENT BY [증가값]
NOMINVALUE OR MINVALUE [최솟값]
NOMAXVALES OR MAXVALUE [최대값]
CYCLE OR NOCYCLE [사이클 설정 여부]
CACHE OR NOCACHE [캐시 설정 여부]
-- 예제
ALTER SEQUENCE EX_SEQ
INCREMENT BY 2
MINVALUE 2
MAXVALUE 10000
CYCLE
NOCACHE;

시퀀스 삭제

-- 문법
DROP SEQUENCE [시퀀스명]

-- 예제
DROP SEQUENCE EX_SEQ
profile
성장형 인간

0개의 댓글