데이터베이스

[ORACLE] SQL - 시퀀스(SEQUENCE)

Seong-Jun 2025. 3. 17. 22:29
728x90
반응형
SMALL

시퀀스(SEQUENCE)란?

시퀀스는 자동으로 번호를 발생시켜 주는 역할을 하는 객체이다. 회원을 관리할 때 회원번호나, 게시판의 게시글 번호 등 테이블 내에서 데이터들을 구별해 줄 수 있는 기본키의 역할을 할 수 있다. MySQL에서는 AUTO_INCREMENT를 설정해 주면 되는데 오라클은 그런 기능이 없으므로 시퀀스를 생성해야 한다.

 

  • 정수를 순차적으로 일정한 값마다 증가시키면서 생성한다.
  • MySQL에서 AUTO_INCREMENT 같은 것이다.

시퀀스 생성 방법

CREATE SEQUENCE 시퀀스명
		[START WITH 숫자]			
		[INCREMENT BY 숫자]		
		[MAXVALUE 숫자]			
		[MINVALUE 숫자]			
		[CYCLE | NOCYCLE]			
		[NOCACHE | CACHE 숫자]

 

시퀀스도 객체이므로 CREATE를 사용해서 생성한다.

  • START WITH : 처음 발생 시킬 시작값을 지정할 수 있다 (기본값 1)
  • INCREMENT BY : 얼마만큼씩 증가시킬 것인지에 대해 지정할 수 있다. (기본값 1)
  • MAXVALUE : 최대값 (기본값 엄청 큰 수...)
  • MINVALUE : 최솟값 (기본값 1)
  • CYCLE | NOCYCLE : MAXVALUE 혹은 MINVALUE와 연관이 있다. 값의 순환여부(기본값 NOCYCLE)
    • CYCLE : 시퀀스 값이 최댓값에 도달하면 다시 최솟값으로 순환하도록 설정
    • NOCYCLE : 시퀀스 값이 최대값에 도달하면 더 이상 값을 생성하지 않는다
  • NOCACHE | CACHE : 캐시메모리 할당 여부 (기본값 CHAR(20))
    • 캐시메모리
      • 미리 발생될 값들을 생성해서 저장해두는 공간.
      • 매번 호출될 때마다 새로 번호를 생성하는 것이 아니라 캐시메모리라는 공간에 미리 생성해 둔 값을 가져다가 사용 (속도가 빠름)

시퀀스 사용 방법

시퀀스명.CURRVAL : 현재 시퀀스 값. 마지막으로 성공한 NEXTVAL을 수행한 값이다.

시퀀스명.NEXTVAL : 현재 시퀀스 값에서 INCREMENT BY에 설정된 값만큼 증가된 값이다.

 

=> CURRVAL을 사용하려면 먼저 NEXTVAL을 사용한 후에 사용 가능하다.

 

시퀀스 변경 방법

ALTER SEQUENCE 시퀀스명
	[INCREMENT BY 숫자]
	[MAXVALUE 숫자]
	[MINVALUE 숫자]
	[CYCLE | NOCYCLE]
	[NOCACHE | CACHE 숫자]

 

=> 시작값을 제외한 나머지 설정값을 변경할 수 있다.

728x90
반응형
LIST