[DataBase] 시퀀스(Sequence)

MINJEE·2023년 8월 27일

SMHRD_2_DataBase

목록 보기
8/9
post-thumbnail

시퀀스

: 오라클 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체

시퀀스 생성

시퀀스 생성 : CREATE SEQUENCE

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

시퀀스 사용

  • 테이블에 시퀀스 추가 할 때 값을 시퀀스명.NEXTVAL 로 추가
    INSERT INTO 테이블명 VALUES(시퀀스명.NEXTVAL, ...);
  • 가장 마지막으로 생성된 시퀀스 시퀀스명.CURRVAL 로 확인
    SELECT 시퀀스명.CURRVAL FROM DUAL;

시퀀스 삭제

시퀀스 삭제 : DROP SEQUENCE

DROP SEQUENCE 시퀀스명;

생성한 시퀀스 확인하기

SELECT * FROM USER_SEQUENCES;

예시

-- 예시
CREATE SEQUENCE EX_SEQ --시퀀스이름 EX_SEQ
	INCREMENT BY 1 --증감숫자 1
	START WITH 1 --시작숫자 1
	MINVALUE 1 --최소값 1
	MAXVALUE 1000 --최대값 1000
	NOCYCLE --순한하지않음
	NOCACHE; --메모리에 시퀀스값 미리할당
    
INSERT INTO MEMBER VALUES(EX_SEQ.NEXTVAL, '홍길동'); -- 1
INSERT INTO MEMBER VALUES(EX_SEQ.NEXTVAL, '이길동'); -- 2
INSERT INTO MEMBER VALUES(EX_SEQ.NEXTVAL, '김길동'); -- 3
INSERT INTO MEMBER VALUES(EX_SEQ.NEXTVAL, '박길동'); -- 4 
profile
개발, 분석 배운 내용 정리하기!

0개의 댓글